1

我想编写一个执行一些命令并等待所有命令终止的 shell 脚本。

我想我要做的就是使用

      cmd1 &
      cmd2 &
      cmd3 &
      ....

等等

但我不知道如何等待他们终止。

有任何想法吗?

4

3 回答 3

1

只需使用wait不带任何参数的命令:

cmd1 &
cmd2 &
cmd3 &
wait

这将使 bash 等待所有未完成的孩子。只要您没有其他需要继续的后台任务,这将起作用。

于 2012-09-27T17:52:23.893 回答
0

这个问题有你的问题的答案。:)

您只需wait调用该wait命令即可处理所有正在运行的作业。

当任何子进程以代码!= 0结束时,如何在bash中等待几个子进程完成并返回退出代码!= 0?

于 2012-09-27T17:40:50.780 回答
0

这个例子似乎有效。

[stou$ ~]$ (sleep 1 ; echo 1) & (sleep 4 ; echo 4) & (sleep 3 ; echo 3)&  wait; echo done
[1] 13651
[2] 13652
[3] 13653
1
[1]   Done                    ( sleep 1; echo 1 )
3
4
[2]-  Done                    ( sleep 4; echo 4 )
[3]+  Done                    ( sleep 3; echo 3 )
done
[stou$ ~]$ 
于 2012-09-27T18:13:08.813 回答