我有一个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完成。
发布于 2010-02-16 09:27:06
正常情况下是这样的;有些事情正在发生。你确定另一个脚本不是在后台运行什么吗?无论如何,您都可以尝试使用wait
。
发布于 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!
发布于 2010-02-19 08:24:30
您只需在执行第二个脚本后添加命令wait
,它将等待您从主体脚本启动的所有进程
甚至可以在调用第二个脚本之后直接使用命令echo $!
恢复第二个脚本的PID,然后将此PID作为参数传递给wait
命令
https://stackoverflow.com/questions/2270081
复制相似问题