tutorial scripts script resueltos manejo ejercicios ejemplos cadenas bash bash-trap

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.