Bash 等待脚本的所有子进程

fab*_*789 4 bash background-process

我有一个脚本

for i in 1 2 3 4; do
    do_something $i &
done
Run Code Online (Sandbox Code Playgroud)

当我调用它时,它在所有do_something终止之前终止。我发现这个问题有很多不同的答案。

编辑help wait告诉我

如果未给出 ID,则等待所有当前活动的子进程,返回状态为零。

wait在最后添加一个还不够吗?

Kus*_*nda 7

是的,wait在最后使用没有参数的 single来等待所有后台作业终止就足够了。

请注意,在子 shell 中启动的后台作业需要在启动它们的同一个子 shell 中等待。您在显示的代码中没有此实例。

另请注意,您链接到问题询问有关检查后台作业的退出状态。这需要wait进行一次为每个后台作业(该作业的PID作为参数)上运行。