运行一堆命令并等待

运行一堆命令并等待

我想同时运行一堆命令,当所有命令完成后,运行另一堆命令。像这样的命令1和命令2 echo“命令1和2完成”命令3和命令4

答案1

command1 &
command2 &

wait
echo 'command1 and command2 have finished'

command3 &
command4 &

wait
echo 'command3 and command4 have finished'

调用wait将暂停脚本,直到所有后台任务完成执行。

或者(仅“供您参考”),取决于您是否希望命令 1 和 2 同时运行(对于命令 3 和 4 等效):

( command1; command2 ) &
echo 'command1 and command2 are running'
wait
echo 'command1 and command2 have finished'

在上面的情况下,command1command2会在后台运行,但彼此不会同时运行。


正在做

command1 & command2
wait

相当于

command1 &
command2
wait

...这将起作用,但command2不会在后台运行,并且在完成执行wait之前不会被调用。command2

答案2

我的问题的实际答案是这样的,特别感谢@raman-sailopal

command1 & command2
wait
echo "command 1 and 2 has finished"
command3 & command4

答案3

command1 & command2; echo "command1 & 2 complete" && command3 & command4; echo "command3 & 4 complete"

&同时运行命令

;模拟新行 - 即将在完成后运行

&&前一个作业完成后运行,前提是前一个作业成功(即不返回任何退出代码,但返回 0)

相关内容