我正在使用嵌套的shell脚本。
我的问题与here和here提出的问题有点类似。但不完全一样。
我试图从这些解决方案中获得解决方案但不成功。
在我的 OuterMostShellScript.sh 中,我做了类似这样的事情:
some commands
./runThisScriptX.sh
other commands
end of script.
runThisScriptX.sh 包含使用&
运算符在后台运行某些进程的循环。
我希望每个进程都由./runThisScriptX.sh
命令启动,然后控件移动到上面代码中的other commands
行。
如何实现这个目标?
编辑:我也是这样的:some commands
./runThisScriptX.sh
wait
other commands
end of script.
但它不起作用。
答案 0 :(得分:4)
两件事:
wait
您的脚本看起来不像:
some commands
. ./runThisScriptX.sh # Note the leading . followed by space
wait # This would wait for the sourced script to finish
other commands
end of script
答案 1 :(得分:1)
答案 2 :(得分:1)
使用内置的bash wait
;来自man page -
等待每个指定的进程并返回其终止状态。每个n可以是a 进程ID或作业规范;如果给出了工作规范,该工作中的所有流程都是如此 管道等待。如果未给出n,则等待所有当前活动的子进程 for,返回状态为零。如果n指定不存在的进程或作业,则 返回状态为127.否则,返回状态是最后一个进程的退出状态 或工作等待。
或者,不要介绍任务。
答案 3 :(得分:1)
在runThisScriptX.sh
内,您应该在退出前等待并行子项完成:
child1 &
child2 &
child3 &
wait
然后在OuterMostShellScript.sh
中,您在后台运行runThisScriptX.sh
,并等待它。
some commands
./runThisScriptX.sh &
wait
other commands
end of script.
wait
只能用于等待当前shell启动的进程。