函数中的“set -e”

时间:2011-04-22 11:15:24

标签: bash shell set sh

如何在函数中使用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语义?

0 个答案:

没有答案