scripts - ¿Es posible detectar*qué*señal de captura en bash?
shell linux (2)
No hay indicios de documentación de ningún argumento o variable que contenga la señal que quedó atrapada, por lo que tendrá que escribir una declaración de función / captura para cada captura que desee que se comporte de manera diferente.
Posible duplicado:
Identificar el nombre de la señal recibida en el script bash shell
Cuando se utiliza algo como trap func_trap INT TERM EXIT
con:
func_trap () {
...some commands...
}
¿Hay alguna forma en el bloque de funciones para detectar qué trampa lo ha llamado?
Algo como:
func_trap () {
if signal = INT; then
# do this
else
# do that
fi
}
¿O necesito escribir una función separada para cada tipo de captura que haga algo diferente? ¿Hay una variable bash que contiene la última señal recibida?
¡Gracias por adelantado!
Puede implementar su propia función de captura que pasa automáticamente la señal a la función:
trap_with_arg() {
func="$1" ; shift
for sig ; do
trap "$func $sig" "$sig"
done
}
$ trap_with_arg func_trap INT TERM EXIT
El primer argumento de func_trap será el nombre de la señal.