Perso, ma gestion des erreurs dans les scripts se résume souvent à terminer dès qu'un truc non supporté se passe. J'ai pris, avec les ebuilds Gentoo, l'habitude de faire des "do_something || die" un peu partout. Ça coute rien, ça alourdi pas le code, donc faut pas se priver. J'ai souvent aussi des espèces d'asserts du genre : [[ -n $foo ]] || die "\$foo aurait déjà due être définie à ce stade"
Pour des scripts courts, mon implem' de die() se résume à une ligne de ce style : die() { [[ $# -gt 0 ]] && echo "!!! $*" >&2 ; exit 1 ; }
Pour des scripts plus tordus, je m'adapte une des bonnes implèm' existantes, comme celle là (affiche une stack trace, et flingue le processus principal quand je die depuis un sous-shell) : http://paludis.pioto.org/trac/browser/trunk/paludis/reposito(...)
Ne pas oublier un petit shopt -s expand_aliases puisque cette implem' utilise des aliases. Et attention, là on est dans du Bash, et déjà assez loin d'un shell Posix quelconque.
[^] # Re: Shell scripting
Posté par tgl . En réponse au journal Qu'est-ce que bien gérer les erreurs dans ses programmes ?. Évalué à 1.
[[ -n $foo ]] || die "\$foo aurait déjà due être définie à ce stade"
Pour des scripts courts, mon implem' de die() se résume à une ligne de ce style :
die() { [[ $# -gt 0 ]] && echo "!!! $*" >&2 ; exit 1 ; }
Pour des scripts plus tordus, je m'adapte une des bonnes implèm' existantes, comme celle là (affiche une stack trace, et flingue le processus principal quand je die depuis un sous-shell) :
http://paludis.pioto.org/trac/browser/trunk/paludis/reposito(...)
Ne pas oublier un petit shopt -s expand_aliases puisque cette implem' utilise des aliases. Et attention, là on est dans du Bash, et déjà assez loin d'un shell Posix quelconque.