bash trap
Trap :
Bash est capable d'intercepter les signaux envoyés par certains raccourcis claviers (comme Ctrl-C) et de changer le comportement par défaut de ces raccourcis. Il suffit pour cela d'utiliser la commande trap. Elle prend en premier argument la commande à exécuter puis les signaux sur lesquels elle doit réagir.
# exemple obtenu à chaque ctrl^c trap "Salut les Palichons " 2 3 # execution avant chaque commande trap "Salut les Palichons " DEBUG # liste des signaux disponible kill -l
Source : https://www.jujens.eu/posts/2015/Jan/09/utiliser-trap-bash/
Appel à une fonction :
# definition fonction function cleanup() { echo "Cleanup : suppression du répertoire $TMP_DIR" rm -frv "$TMP_DIR" } # on appelle la fonction 'cleanup' lors à la fin du script trap cleanup EXIT
Gestion des erreurs avec fonction 'failure' :
# definition trap failure INT TERM # utilisation cat /tmp/bazar.txt|grep 'truc'|| failure
Rappel : parametre pipefail
# cat d'un fichier qui n'existe pas cat /tmp/truc.txt | head # le code retour sera toujours à 0 :( echo $? 0 # sauf si on utilise le parametre pipefail set -o pipefail cat /tmp/truc.txt | head # le code retour est correct :) echo $? 1
Le code de retour du pipeline est la valeur de la dernière commande (la plus à droite) à sortir avec un code non nul, ou zéro si toutes les commandes s'achèvent avec succès.
Developpement en mode strict :
rajouter la ligne 'set -euo pipefail' en début de script
#!/bin/bash set -euo pipefail - e : sortie du script dès qu'une commande échoue - u : génération d'une erreur dès qu'une variable indéfinie est rencontrée - o pipefail : ne retoure 0 pour #? que lorsque toutes les commandes d'un pipeline se sont déroulées correctement.