Как использовать семантику set -e
в функции?
Это снова открывается "set -e" в вопросе функции, поскольку он не получил правильного ответа и уже принят.
Вот пример:
#!/bin/bash
set -exo pipefail
f() {
echo a
false
echo Should NOT get HERE
}
if f ; then
true
fi
Мне бы хотелось 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
Перемещение f
из оператора if выполняет задание, конечно, в данном конкретном случае:
#!/bin/bash
set -exo pipefail
f() {
echo a
false
echo Should NOT get HERE
}
f
if [ "$?" != "0" ] ; then
true
fi
Это не очень помогает мне.
Можно ли включить семантику set -e
, когда функция выполняется из предиката if?