使用嵌套脚本

时间:2018-02-28 11:04:17

标签: bash shell wait

我遇到了在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 &

在调用脚本时使用等待时出错的任何想法?感谢

1 个答案:

答案 0 :(得分:0)

您的direction应该是wait的一部分。从runSet.sh移除wait并在for loop内添加wait并检查,它会有效。