如何从shell脚本执行以下操作(一次运行多个命令并等待它们)?

时间:2012-09-27 17:31:12

标签: shell

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

我认为我必须做的是使用

      cmd1 &
      cmd2 &
      cmd3 &
      ....

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

任何想法?

3 个答案:

答案 0 :(得分:1)

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

cmd1 &
cmd2 &
cmd3 &
wait

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

答案 1 :(得分:0)

这个问题可以解答您的问题。 :)

通过调用wait命令,您只需wait即可查找所有正在运行的作业。

How to wait in bash for several subprocesses to finish and return exit code !=0 when any subprocess ends with code !=0?

答案 2 :(得分: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$ ~]$