首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Bash脚本调用另一个bash脚本并等待其完成,然后再继续

Bash脚本调用另一个bash脚本并等待其完成,然后再继续
EN

Stack Overflow用户
提问于 2010-02-16 09:24:47
回答 5查看 67.1K关注 0票数 28

我有一个bash脚本运行另一个bash脚本,但是第一个bashscript没有等待第二个bashscript完成后才继续,我怎么能强制它等待呢?

例如:

#!/bin/bash
# first.sh

#call to secondary script
sh second.sh
echo "second.sh has completed"

echo "continuing with the rest of first.sh..."

按照现在的方式,它将运行second.sh,并继续运行,而无需等待second.sh完成。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-16 09:27:06

正常情况下是这样的;有些事情正在发生。你确定另一个脚本不是在后台运行什么吗?无论如何,您都可以尝试使用wait

票数 14
EN

Stack Overflow用户

发布于 2013-11-20 19:23:00

因为我在几个脚本中使用了这样的方案-只是在同一个shell中调用第二个脚本-使用source复制。

script-1

source script2.sh

或者:

. script2.sh

所以-在script2.sh结束它的所有任务之前,script-1中没有一个命令不会继续执行。

举个小例子。

第一个脚本:

$ cat script-1.sh
#!/bin/bash
echo "I'm sccript $0."
echo "Runnig script-2..."

source script-2.sh

echo "script-2.sh finished!"

第二个脚本:

$ cat script-2.sh
#bin/bash
echo "I'm script-2. Running wait operation..."
sleep 2
echo "I'm ended my task."

它的工作原理:

$ ./script-1.sh
I'm sccript ./script-1.sh.
Runnig script-2...
I'm script-2. Running wait operation...
I'm ended my task.
script-2.sh finished!
票数 23
EN

Stack Overflow用户

发布于 2010-02-19 08:24:30

您只需在执行第二个脚本后添加命令wait,它将等待您从主体脚本启动的所有进程

甚至可以在调用第二个脚本之后直接使用命令echo $!恢复第二个脚本的PID,然后将此PID作为参数传递给wait命令

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2270081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档