如果这是转贴,请道歉。在发布之前我做了搜索(没有运气)。
" bash -e"如果有任何错误,将会出错/失败。它不包括" bash -u"条件?如果未设置参数,则使用该参数的命令失败并被" bash -e"捕获。 ?
不是" bash -eu"等于" bash -e"在那种情况下?
答案 0 :(得分:3)
不,bash -e
(bash
以errexit
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退出状态。