Bash 等待进程结束

Bash 等待进程结束,bash,process,Bash,Process,我想同时运行n进程(在我的模拟案例中),因此我使用和如下: for i in {1..50}; do run simulation & done 每次模拟完成后,我需要解析它的输出文件。我的问题是如何知道流程何时完成,以及如何在流程完成后调用函数 编辑:我想我需要做的是调用一个函数,在模拟完成后调用它并解析它的文件。在我看来,这个函数必须是一个子进程,对吗 谢谢 使用wait内置实用程序。有关更多信息,请参见manbash。在最简单的情况下,wait本身将等待所有子进程终止。

我想同时运行
n
进程(在我的模拟案例中),因此我使用
如下:

for i in {1..50};
do
     run simulation &
done
每次模拟完成后,我需要解析它的输出文件。我的问题是如何知道流程何时完成,以及如何在流程完成后调用函数

编辑:我想我需要做的是调用一个函数,在模拟完成后调用它并解析它的文件。在我看来,这个函数必须是一个子进程,对吗


谢谢

使用
wait
内置实用程序。有关更多信息,请参见
manbash
。在最简单的情况下,
wait
本身将等待所有子进程终止。

使用
wait
内置实用程序。有关更多信息,请参见
manbash
。在最简单的情况下,
wait
本身将等待所有子进程终止。

由于您似乎不想/不需要等待所有模拟完成,您只需执行以下操作:

for i in {1..50};
do
     { run simulation && parse output; } &
done

由于您似乎不想/不需要等待所有模拟完成,您可以简单地执行以下操作:

for i in {1..50};
do
     { run simulation && parse output; } &
done

wait
内置程序等待所有子项完成。如果要为完成的每个作业执行命令,可以使用
trap
。在您的情况下,
wait
trap
的组合应该可以工作:

trap parse_output SIGCHLD
for i in {1..50}; do
  run simulation &
done
wait

wait
内置程序等待所有子项完成。如果要为完成的每个作业执行命令,可以使用
trap
。在您的情况下,
wait
trap
的组合应该可以工作:

trap parse_output SIGCHLD
for i in {1..50}; do
  run simulation &
done
wait