Est-il possible de détecter * qui * signal de piège en bash? [dupliquer]
Question
Possible en double: Identification Nom du signal reçu dans le script shell bash
Lorsque vous utilisez quelque chose comme trap func_trap INT TERM EXIT
avec:
func_trap () {
...some commands...
}
Est-il possible dans le bloc fonctionnel pour détecter qui piège a appelé?
Quelque chose comme:
func_trap () {
if signal = INT; then
# do this
else
# do that
fi
}
Ou dois-je écrire une fonction distincte pour chaque type de piège qui fait quelque chose de différent? Y at-il une variable bash qui détient le dernier signal reçu?
Merci d'avance!
La solution
Aucun indice de documentation de tout argument ou variable contenant le signal qui a été pris au piège, de sorte que vous devrez écrire une déclaration fonction / piège pour chaque piège que vous voulez se comporter différemment.
Autres conseils
Vous pouvez implémenter votre propre fonction de piège qui passe automatiquement le signal à la fonction:
trap_with_arg() {
func="$1" ; shift
for sig ; do
trap "$func $sig" "$sig"
done
}
$ trap_with_arg func_trap INT TERM EXIT
Le premier argument à func_trap sera le nom du signal.