运行一堆命令并等待

Ebr*_*eqi 1 shell-script

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

Kus*_*nda 5

command1 &
command2 &

wait
echo 'command1 and command2 have finished'

command3 &
command4 &

wait
echo 'command3 and command4 have finished'
Run Code Online (Sandbox Code Playgroud)

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

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

( command1; command2 ) &
echo 'command1 and command2 are running'
wait
echo 'command1 and command2 have finished'
Run Code Online (Sandbox Code Playgroud)

在上述情况下,command1command2会在后台运行,但不能同时使用对方。


正在做

command1 & command2
wait
Run Code Online (Sandbox Code Playgroud)

相当于

command1 &
command2
wait
Run Code Online (Sandbox Code Playgroud)

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