Как использовать семантику 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?