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!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top