我的 bash 脚本使用了很多检查,例如:
if [ something bad ] ; then
echo "error message"
exit 1
fi
我发现如果用户通过 source my-script.sh
而不是 ./my-script.sh
执行它,这个 exit 1
关闭用户的外壳!
并且用户看不到任何错误消息!
我怎么知道脚本是源代码,我如何退出(使用非零状态代码)源脚本?一般来说,我该怎么办?
最佳答案
这似乎有两个部分。第一个是了解您何时在 source
d 脚本中执行而不是已执行的脚本。可以在 this 中找到回答,对于 bash,他们建议:
[[ "$0" != "$BASH_SOURCE" ]] && sourced=1 || sourced=0
判断您是否被采购。
如果您正在寻找来源,您会希望使用 return
而不是 exit
。
您可以将该函数存储在变量中,例如
if [[ $sourced -eq 1 ]]; then
ret=return
else
ret=exit
fi
然后当你想使用合适的时候你就可以使用
$ret 1
关于bash:退出源脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49857332/