等待语句在嵌套脚本的bash中不起作用

问题描述 投票:0回答:1

我有一个在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 &

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

bash shell wait
1个回答
0
投票

你的wait应该是runSet.sh的一部分。所以从wait中删除for loop并在wait中添加runSet.sh并检查,它会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.