注意:如果您正在寻找一种解决方法,因为set -e在函数中不起作用,请转到函数中的"set -e".这个问题是为什么它不能按预期工作.
当在GNU bash上运行以下版本时,版本4.1.5(1) - 释放:
set -ex
PS4=' ${FUNCNAME[0]}: $LINENO: '
function f() {
set -e
false
echo $@
}
! f why does it display ? It should stop because of -e
f
Run Code Online (Sandbox Code Playgroud)
它显示
: 11: f why does it display '?' It should stop because of -e
f: 6: set -e
f: 7: false
f: 8: echo why does it display '?' It should stop because of -e
why does it display ? It should stop because of -e
: 12: f
f: 6: set -e
f: 7: false
Run Code Online (Sandbox Code Playgroud)
我希望它永远不会超过错误,因为-e意味着"当命令具有非零退出状态时退出".我知道这-e有一个棘手的行为,如http://mywiki.wooledge.org/BashFAQ/105中所述,但我想了解在这个特定情况下会发生什么.我正在使用-e它,并证明在许多非常简单的场景中最有用.这种情况有点棘手但如果可以解释我可以在每一行之后使用-e而不是添加|| exit 1.
| 归档时间: |
|
| 查看次数: |
1251 次 |
| 最近记录: |