我想同时运行一堆命令,当所有命令完成后,运行另一堆命令。像这样的命令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'
在上面的情况下,command1
和command2
会在后台运行,但彼此不会同时运行。
正在做
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)