我遇到了在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 &
在调用脚本时使用等待时出错的任何想法?感谢
答案 0 :(得分:0)
您的direction
应该是wait
的一部分。从runSet.sh
移除wait
并在for loop
内添加wait
并检查,它会有效。