" bash -eu"之间的区别。和" bash -e"

时间:2018-05-16 19:25:54

标签: shell unix scripting

如果这是转贴,请道歉。在发布之前我做了搜索(没有运气)。

" bash -e"如果有任何错误,将会出错/失败。它不包括" bash -u"条件?如果未设置参数,则使用该参数的命令失败并被" bash -e"捕获。 ?

不是" bash -eu"等于" bash -e"在那种情况下?

1 个答案:

答案 0 :(得分:3)

不,bash -ebasherrexit shell选项集开头)与bash -e -u不同(bash以{{1}开头}和errexit设置)。

示例:

nounset
$ bash -e -c 'echo "hello $string"'
hello
$ echo "$?"
0

$ bash -e -u -c 'echo "hello $string"' bash: string: unbound variable $ echo "$?" 1 下使用未设置的变量不是错误,它只是扩展为空字符串。

此外:

errexit

这显示了$ bash -u -c 'echo "hello $string"' bash: string: unbound variable $ echo "$?" 127 -e之间的细微差别。只有-u-u退出代码127,转换为“未找到命令”错误。对于bash-e-u退出时的错误代码更为通用。

对于POSIX bash shell也是如此,尽管我不相信最后一个示例需要显式的127退出状态。