Considere este trecho:
stop () {
echo "${1}" 1>&2
exit 1
}
func () {
if false; then
echo "foo"
else
stop "something went wrong"
fi
}
Normalmente, quando func
é chamado, o script é finalizado, que é o comportamento pretendido. No entanto, se for executado em um sub-shell, como em
result=`func`
não sairá do script. Isso significa que o código de chamada deve verificar o status de saída da função todas as vezes. Há alguma maneira de evitar isto? É para isso que set -e
serve?