Bash:
Gestion des erreurs

Comment faire :

#!/bin/bash

# Rediriger stderr vers un fichier
grep "quelque chose" fichier.txt 2> erreurs.log

# Gestion des erreurs avec les codes de sortie
if ! grep "quelque chose" fichier.txt; then
    echo "Oups, quelque chose s'est mal passé lors de la recherche de 'quelque chose'."
    exit 1
fi

# Utiliser un piège pour nettoyer avant de quitter sur une erreur
nettoyage() {
  echo "Nettoyage des fichiers temporaires..."
  rm temp_*
}

trap nettoyage ERR

# erreur intentionnelle : le fichier n'existe pas
cat temp_fichier.txt

Exemple de sortie lorsqu’une erreur se produit :

Nettoyage des fichiers temporaires...
cat: temp_fichier.txt: Aucun fichier ou dossier de ce type

Approfondissement

Le traitement des erreurs dans les scripts Bash remonte aux origines du shell Unix, où des scripts robustes et fiables étaient (et sont toujours) essentiels pour l’administration système et l’automatisation. Traditionnellement, les erreurs dans Bash sont gérées en vérifiant le code de sortie d’une commande, qui, par convention, renvoie 0 en cas de succès et une valeur non nulle en cas d’échec.

Bash a introduit la commande trap comme intégrée, permettant aux utilisateurs de spécifier les commandes à exécuter sur divers signaux ou à la sortie du script. Cela est utile pour les tâches de nettoyage ou comme mécanisme de gestion des erreurs en dernier recours.

Il y a aussi la commande set, qui peut changer le comportement de Bash en cas d’erreurs. Par exemple, set -e fera quitter immédiatement un script si une commande se termine avec un statut non nul, une façon d’échouer rapidement et d’éviter les erreurs en cascade.

Les alternatives à la gestion des erreurs intégrée dans Bash incluent la vérification explicite de l’existence de fichiers, l’utilisation de la substitution de commande, ou même la rédaction de vos propres fonctions pour gérer les erreurs de manière plus granulaire.

Bien que la gestion rigoureuse des erreurs puisse parfois sembler excessive pour des petits scripts, c’est une pratique qui peut économiser beaucoup de temps de débogage et prévenir des comportements inattendus tant pour vous que pour les utilisateurs.

Voir aussi

Rappelez-vous, écrire des scripts est une forme d’art, et la façon dont vous gérez les pépins et les trébuchements peut rendre votre chef-d’œuvre plus résilient. Bon scripting !