Domanda

  

Eventuali duplicati:
   Identificazione nome del segnale ricevuto in script di shell bash

Quando si utilizza qualcosa come trap func_trap INT TERM EXIT con:

func_trap () {
    ...some commands...
}

C'è un modo nel blocco funzionale di rilevare che trappola ha chiamata?

Qualcosa di simile:

func_trap () {
    if signal = INT; then
        # do this
    else
        # do that
    fi
}

O ho bisogno di scrivere una funzione separata per ogni tipo di trappola che fa qualcosa di diverso? C'è una variabile bash che contiene l'ultimo segnale ricevuto?

Grazie in anticipo!

È stato utile?

Soluzione

Non ci sono accenni di documentazione di qualsiasi argomento o una variabile che tengono il segnale che è stato intrappolato, quindi dovrete scrivere una funzione con istruzione / trappola per ogni trappola che si desidera comportarsi in modo diverso.

Altri suggerimenti

È possibile implementare la propria funzione trappola che passa automaticamente il segnale alla funzione:

trap_with_arg() {
    func="$1" ; shift
    for sig ; do
        trap "$func $sig" "$sig"
    done
}

$ trap_with_arg func_trap INT TERM EXIT

Il primo argomento di func_trap sarà il nome del segnale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top