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

如何从shell脚本执行以下操作(一次运行多个命令并等待它们)?,shell,Shell,我想编写一个shell脚本,执行一些命令并等待它们全部终止 我想我要做的就是使用 cmd1 & cmd2 & cmd3 & .... 等等 但我不知道的是如何等待它们终止 有什么想法吗?这个问题回答了你的问题。:) 通过调用wait命令,您只需等待所有正在运行的作业 这个问题有你问题的答案。:) 通过调用wait命令,您只需等待所有正在运行的作业 只需使用wait命令,无需任何参数: cmd1 & cmd2 &am

我想编写一个shell脚本,执行一些命令并等待它们全部终止

我想我要做的就是使用

      cmd1 &
      cmd2 &
      cmd3 &
      ....
等等

但我不知道的是如何等待它们终止


有什么想法吗?

这个问题回答了你的问题。:)

通过调用
wait
命令,您只需等待所有正在运行的作业


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

通过调用
wait
命令,您只需等待所有正在运行的作业


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

cmd1 &
cmd2 &
cmd3 &
wait

这将使bash等待所有未完成的子项。只要您没有其他需要继续执行的后台任务,这项功能就可以正常工作。

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

cmd1 &
cmd2 &
cmd3 &
wait

这将使bash等待所有未完成的子项。只要您没有其他需要继续执行的后台任务,此示例就可以运行。

此示例似乎可以运行

[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$ ~]$ 

这个例子似乎有效

[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$ ~]$ 
“;”对我来说不起作用,因为我想让它们在后台一起运行。有点像分叉并等待所有分叉的进程终止。”;“对我来说不起作用,因为我希望它们在后台一起运行。有点像分叉并等待所有分叉的进程终止。