如何在函数中使用set -e
语义?
这已重新开启"set -e" in a function问题,因为它未得到正确回答且已被接受。
以下是示例:
#!/bin/bash
set -exo pipefail
f() {
echo a
false
echo Should NOT get HERE
}
if f ; then
true
fi
我希望f
退出false
。
我的实验表明,使用子shell (f)
调用对此没有帮助:
#!/bin/bash
set -exo pipefail
f() {
echo a
false
echo Should NOT get HERE
}
g() {
( f )
}
if g ; then
true
fi
将f
移出if语句当然可以完成这个特定情况:
#!/bin/bash
set -exo pipefail
f() {
echo a
false
echo Should NOT get HERE
}
f
if [ "$?" != "0" ] ; then
true
fi
这对我来说并没有太大的帮助。
当从if谓词中执行函数时,是否可以打开set -e
语义?