ags*_*mek 13 bash shell set sh
如何set -e在函数中使用语义?
这在函数问题中重新打开"set -e",因为它没有被正确回答并且已被接受.
这是一个例子:
#!/bin/bash
set -exo pipefail
f() {
echo a
false
echo Should NOT get HERE
}
if f ; then
true
fi
Run Code Online (Sandbox Code Playgroud)
我想f退出false.
我的实验表明,使用subshell (f)调用在这里没有帮助:
#!/bin/bash
set -exo pipefail
f() {
echo a
false
echo Should NOT get HERE
}
g() {
( f )
}
if g ; then
true
fi
Run Code Online (Sandbox Code Playgroud)
移动f出来的if语句当然不会在这种特殊情况下的工作:
#!/bin/bash
set -exo pipefail
f() {
echo a
false
echo Should NOT get HERE
}
f
if [ "$?" != "0" ] ; then
true
fi
Run Code Online (Sandbox Code Playgroud)
这对我来说并不那么艰难.
set -e当从if谓词中执行函数时,是否可以打开语义?