以下脚本实现的功能是启动多个memtester进程测试DDR的稳定性,并在后台运行;由于sh Shell不支持数组类型的数据类型,导致在while循环中不能把“$i”当索引使用数组。在这种情况下,使用eval pid$i=$!来保存启动的进程ID(该命令执行结果为:pid1=ID1, pid2=ID2, ......); 所有的memtester进程启动后,调用uwait()函数,同样使用eval wait \$pid$i等待所有memtester进程的退出。
eval命令将会首先扫描命令行进行所有的替换,憨厚再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。所以eval可以模拟一维数组,正如脚本中所使用,同样也可以模拟二维数组。
wait命令等待制定的pids进程执行完后返回。
#!/bin/sh
#$1 - size of memory region
#$2 - loops
#$3 - number of memtester process
umemfree()
{
cat