• [^] # Re: Shell scripting

    Posté par . En réponse au journal Qu'est-ce que bien gérer les erreurs dans ses programmes ?. Évalué à 1.

    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.