Pregunta

  

Duplicar posibles:
   La identificación de nombre de la señal recibida en secuencia de comandos shell bash

Cuando se usa algo como trap func_trap INT TERM EXIT con:

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

¿Hay alguna manera en el bloque de función para detectar , que trampa ha llamado?

Algo así como:

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

¿O tengo que escribir una función separada para cada tipo de trampa que hace algo diferente? ¿Hay una variable de bash que tiene la última señal recibida?

Gracias de antemano!

¿Fue útil?

Solución

No hay indicios de documentación de cualquier argumento o variable que contiene la señal de que estaba atrapado, por lo que tendrá que escribir una sentencia de función / trampa para cada trampa desea comportarse de manera diferente.

Otros consejos

Se puede implementar su propia función trampa que pasa automáticamente la señal con 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top