我有一个在bash中无效的wait语句问题。
我在100个文件夹中有一组基准。每个文件夹都有可执行文件和一个名为runBenchmark.sh的脚本文件,它使用一组这样的参数启动每个可执行文件
./benchmark_00 -v arg1 arg2 &
现在,我有一个主脚本文件runSet.sh,它循环遍历所有这些文件夹并运行各个runBenchmark.sh脚本。这很好用
最后,我有一个更大的主脚本,它在一个循环中调用此runSet.sh,重复50次。在循环内部,我有
for ((i=0; i<50;i=i+1))
do
runSet.sh
wait
done
我的期望是让每个循环中的集合运行完成,并且在当前集合完成执行之前,下一个循环不会调用任何基准测试。但是,我观察的是,不是在每个循环中将100个基准作为一个集合启动,而是忽略wait语句,循环只是不断地启动可执行文件。
如果我在循环中而不是runSet.sh中编写它,它可以正常工作。
./benchmark_00 -v arg1 arg2 &
./benchmark_01 -v arg3 arg4 &
.
.
./benchmark_99 -v arg5 arg6 &
在调用脚本时使用等待时出错的任何想法?谢谢
你的wait
应该是runSet.sh
的一部分。所以从wait
中删除for loop
并在wait
中添加runSet.sh
并检查,它会起作用。