为什么bash errexit在函数调用中的表现不如预期?
在bash手册页中,它指出:
所以我假设一个函数应该被视为括号括起来的命令列表.但是,如果对函数调用应用条件,则errexit不再保留在函数体内,并且在返回之前执行整个命令列表.即使您在为该子shell启用了errexit的函数内显式创建子shell,也会执行命令列表中的所有命令.这是一个演示该问题的简单示例: function a() { b ; c ; d ; e ; } function ap() { { b ; c ; d ; e ; } ; } function as() { ( set -e ; b ; c ; d ; e ) ; } function b() { false ; } function c() { false ; } function d() { false ; } function e() { false ; } ( set -Eex ; a ) + a + b + false ( set -Eex ; ap ) + ap + b + false ( set -Eex ; as ) + as + set -e + b + false 现在,如果我对每个人都应用条件…… ( set -Eex ; a || false ) + a + b + false + c + false + d + false + e + false + false ( set -Eex ; ap || false ) + ap + b + false + c + false + d + false + e + false + false ( set -Eex ; as ) + as + set -e + b + false + c + false + d + false + e + false + false
你开始引用
manual然后你切掉了解释这种行为的位,这是在下一句话中:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |