E 'possibile rilevare che * * segnale trappola a bash? [duplicare]
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!
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.