当我在shell脚本中使用exit命令时,脚本将终止终端(提示符)。是否有办法终止一个脚本,然后留在终端?
我的脚本run.sh希望通过直接获取或者从另一个脚本获取来执行。
编辑:
更具体地说,有两个脚本run2.sh as
...
. run.sh
echo "place A"
...
然后运行。sh as
...
exit
...
当我经过它的时候。如果它在run.sh中命中退出代码线,我希望它停止到终端并停留在那里。但是使用出口,整个航站楼会关闭。
PS:我已经尝试使用返回,但回声代码线仍将执行....
改进Tzunghsing的答案,有更清晰的结果和错误重定向,用于无声使用:
#!/usr/bin/env bash
echo -e "Testing..."
if [ "X$(basename $0 2>/dev/null)" = "X$(basename $BASH_SOURCE)" ]; then
echo "***** You are Executing $0 in a sub-shell."
exit 0
else
echo "..... You are Sourcing $BASH_SOURCE in this terminal shell."
return 0
fi
echo "This should never be seen!"
或者如果你想把这个放进一个静默函数:
function sExit() {
# Safe Exit from script, not closing shell.
[ "X$(basename $0 2>/dev/null)" = "X$(basename $BASH_SOURCE)" ] && exit 0 || return 0
}
...
# ..it have to be called with an error check, like this:
sExit && return 0
echo "This should never be seen!"
请注意:
如果你在脚本中启用了erreexit (set -e),并且返回N且N != 0,你的整个脚本将立即退出。要查看所有shell设置,请使用,set -o。
在函数中使用时,第一个返回0表示退出函数,第二个返回0表示退出脚本。