Ist es möglich, * die * Trap-Signal in bash zu erkennen? [Duplikat]
Frage
Mögliche Duplizieren:
Identifizierung empfangenen Signalnamen in der Bash-Shell-Skript
Wenn Sie so etwas wie trap func_trap INT TERM EXIT
mit:
func_trap () {
...some commands...
}
Gibt es eine Möglichkeit in dem Funktionsblock zu erkennen die Falle hat es genannt?
So etwas wie:
func_trap () {
if signal = INT; then
# do this
else
# do that
fi
}
Oder muss ich eine separate Funktion für jeden Trap-Typ schreiben, die etwas anderes tut? Gibt es einen Bash-Variable, die das letzte empfangene Signal hält?
Vielen Dank im Voraus!
Lösung
Keine Dokumentation Hinweise auf jedes Argument oder Variable das Signal hält, die gefangen wurde, so dass Sie für jede Falle eine Funktion / Trap-Anweisung schreiben müssen werden Sie sich anders verhalten wollen.
Andere Tipps
Sie können Ihre eigene Trap-Funktion implementieren, die automatisch das Signal an die Funktion übergeben wird:
trap_with_arg() {
func="$1" ; shift
for sig ; do
trap "$func $sig" "$sig"
done
}
$ trap_with_arg func_trap INT TERM EXIT
Das erste Argument für func_trap wird der Name des Signals sein.