Gestion des exceptions dans les scripts shell?

Je cherche un mécanisme de gestion des exceptions dans le script shell. Y a-t-il une tentative, attraper un mécanisme équivalent dans un script shell?

La structure if / else et les codes de sortie peuvent vous aider à faire semblant. Cela devrait fonctionner dans Bash ou Bourne (sh).

 if foo ; then else e=$? # return code from if if [ "${e}" -eq "1"]; then echo "Foo returned exit code 1" elif [ "${e}" -gt "1"]; then echo "Foo returned BAD exit code ${e}" fi fi 

Voici deux fonctions de base simples qui permettent la gestion des événements dans bash:

Vous pouvez l’utiliser pour gérer les exceptions de base comme ceci:

 onFoo(){ echo "onFoo() called width arg $1!" } foo(){ [[ -f /tmp/somefile ]] || throw EXCEPTION_FOO_OCCURED "some arg" } addListener EXCEPTION_FOO_OCCURED onFoo 

La gestion des exceptions à l’aide des blocs try / catch n’est pas prise en charge dans bash, cependant, vous pouvez essayer de regarder le framework BANGSH qui le supporte (c’est un peu comme jquery pour bash).

Cependant , la gestion des exceptions sans cascad / try-blocks est similaire à la gestion des événements , ce qui est possible dans presque tous les langages avec prise en charge de la baie.

Si vous voulez garder votre code bien rangé (sans verbosité if / else), je vous recommande d’utiliser les événements.

La suggestion recommandée par MatToufoutu (en utilisant || et &&) n’est pas recommandée pour les fonctions, mais ok pour les commandes simples . (voir BashPitfalls sur les risques)

  { # command which may fail and give an error } || { # command which should be run instead of the above failing command }