我想编写一个执行一些命令并等待所有命令终止的 shell 脚本。
我想我要做的就是使用
cmd1 &
cmd2 &
cmd3 &
....
等等
但我不知道如何等待他们终止。
有任何想法吗?
我想编写一个执行一些命令并等待所有命令终止的 shell 脚本。
我想我要做的就是使用
cmd1 &
cmd2 &
cmd3 &
....
等等
但我不知道如何等待他们终止。
有任何想法吗?
只需使用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$ ~]$