2017-09-24 30 views
0

是否有合适的方法在Bash中调用外部命令或脚本,等待完成并将控制权返回给调用脚本?我所看到的是,外部脚本退出时,它只是下降到外壳,而不返回控制:退出时Bash调用外部命令并返回控制

#!/bin/bash 

while [[ "${RUNAGAIN,,}" != *"no"* ]] 
do 
    $cmd="source ./otherscript.sh" 
    fg $cmd 

    echo "Do you want to run again?" 
    read RUNAGAIN 
done 
+1

plain'。/ otherscript.sh'不起作用? –

+0

如果我正确理解你,你想要的是当Bash执行命令时的正常行为。不过,你的例子很奇怪,通过使用'source'命令来读取一个外部脚本并在当前* shell中运行它。 –

+1

另外,我不认为'fg'命令对你有用。 –

回答

0

感谢您的帮助。运行只是“源./externalscript.sh”为我做了窍门。不知道为什么不开始工作,但现在一切都很好。

+0

为什么你认为它会*或*应该*以另一种方式工作? (如果你在这个问题中描述过,也许有人可以添加一个直接解决这种误解的答案)。 'fg'是作业控制 - 一个通常在非交互式shell中默认关闭的功能 - 它的参数是一个jobspec - 作业号或描述已经运行的后台作业的模式;如果你还没有开始任何背景工作(在上面你没有),它什么都不做。 –

相关问题