segnale trappola personalizzato in ksh
-
11-10-2019 - |
Domanda
C'è un modo per me di implementare i segnali falsi personalizzato in ksh? Attualmente sto catturando il segnale ERR e uscire. Tuttavia, a causa di un cambiamento, ci sono le chiamate che non possono restituire il successo, tuttavia, che è una condizione valida. In tal caso, voglio fare in modo che questa chiamata genera un segnale diverso o gestire l'ERR in modo diverso. C'è un modo per farlo?
Soluzione
È possibile utilizzare kill
per inviare qualsiasi segnale che si desidera la shell corrente. È possibile utilizzare exit
in una subshell o return
in una funzione per impostare qualsiasi codice di errore che si desidera.
Prova questo script:
#!/bin/ksh
trap 'echo USR1 signal processed' USR1
trap 'echo ERR signal processed' ERR
[[ $1 == a ]] && kill -s USR1 $$ || (exit 1)
echo "done"
Esempio:
$ ./testsignal
ERR signal processed
done
$ ./testsignal a
USR1 signal processed
done
Altri suggerimenti
Forse si potrebbe semplicemente avvolgere il bilancio i cui codici di uscita si vuole trattare soprattutto in una costruzione che sarebbe semplicemente fare quello che vuoi (che impiegano "o" o "se non" le costruzioni e l'analisi dei codici di uscita).
Questo sembra essere uno stile di programmazione molto più pulito, non è vero?