Considérez cet extrait:
stop () {
echo "${1}" 1>&2
exit 1
}
func () {
if false; then
echo "foo"
else
stop "something went wrong"
fi
}
Normalement, quand func
est appelé, le script se terminera, ce qui est le comportement souhaité. Cependant, s'il est exécuté dans un sous-shell, comme dans
result=`func`
il ne quittera pas le script. Cela signifie que le code appelant doit vérifier à chaque fois l'état de sortie de la fonction. Y a-t-il un moyen d'éviter cela? C'est pour ça set -e
?
func
.