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!

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top