| Exemple : HUP et EXIT | dialogue | Réponse |
|---|---|---|
# programme essai
function hangup {
(( i == 2)) && exit
(( i+=1 ))
echo "Pour quitter faire 'kill -9 $$'"
}
function msg_fin {
echo "shell terminé après $i tentatives"
}
trap hangup HUP ; trap msg_fin EXIT
typeset -i i=0
while (( 1 ))
do : # commande nop (deux-points)
done |
essai & kill -1 12345 kill -HUP %1 kill -1 12345 essai & kill -1 23456 kill -9 23456 |
[1] 12345 Pour quitter faire 'kill -9 12345' Pour quitter faire 'kill -9 12345' shell terminé après 2 tentatives [1] + 12345 Killed essai & [1] 23456 Pour quitter faire 'kill -9 12345' kill -9 23456 [1] + 23456 Killed essai & |
trap - signal supprime le trap sur un signal.
L'utilisation du trap sur la condition de DEBUG permet d'exécuter une fonction à chaque lignes de commandes. Ci-après l'affichage de la variable i :
i=5 trap 'echo $i' DEBUG set -x ((i+=$RANDOM)) set +x trap - DEBUG # création de la variable i égale à 5 # création du trap DEBUG # passage en mode xtrace + echo 5 5 + let i+=15009 + echo 15014 15014 # sortir du mode xtrace 5 # suppression du trap DEBUG