bash:退出源脚本

标签 bash

我的 bash 脚本使用了很多检查,例如:

if [ something bad ] ; then
    echo "error message"
    exit 1
fi

我发现如果用户通过 source my-script.sh 而不是 ./my-script.sh 执行它,这个 exit 1 关闭用户的外壳! 并且用户看不到任何错误消息!

我怎么知道脚本是源代码,我如何退出(使用非零状态代码)源脚本?一般来说,我该怎么办?

最佳答案

这似乎有两个部分。第一个是了解您何时在 sourced 脚本中执行而不是已执行的脚本。可以在 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/

相关文章:

bash - 在 bash 中进行并行处理?

linux - 使用脚本编号和复制具有奇数和偶数的文件

linux - LDAP - 跨多个 VM 的 SSH 脚本

bash - 如何可靠地 rm -fr *?

linux - 脚本 bash Linux 找不到错误

bash - 使用 wget 优化网页抓取

bash - 在 Bash 中使用变量作为函数参数

linux - 在 Bash 脚本中使用间接变量引用

bash - Oracle expdp CentOS 6.2 Shell 脚本异常行为 - 换行给出未找到的命令

Bash:用引号、逗号和换行符解析 CSV