当从 bash 脚本运行命令时,bash 是否总是等待上一个命令完成,还是只是启动命令然后继续执行下一个命令?
即:如果从 bash 脚本运行以下两个命令,事情可能会失败吗?
cp /tmp/a /tmp/b
cp /tmp/b /tmp/c
是的,如果您不执行任何其他操作,那么 bash 脚本中的命令将被序列化。您可以告诉 bash 并行运行一堆命令,然后等待它们全部完成,但执行如下操作:
command1 &
command2 &
command3 &
wait
前三行末尾的 & 符号告诉 bash 在后台运行该命令。第四条命令,wait
,告诉 bash 等待所有子进程退出。
请注意,如果您这样做,您将无法获取子命令的退出状态(并且set -e
不会工作),所以你将无法以通常的方式判断他们是成功还是失败。
The bash手册有更多信息(搜索wait
,大约向下的三分之二)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)