Puedo configurar trapen scripts bash pero no en funciones bash.
Por ejemplo, sourceel código a continuación y ejecutar f, ahora prueba Ctrl+ C, no ha sido atrapado
¿Cómo configurar trapen funciones bash?
4 trap ctrl_c INT
5
6 ctrl_c () {
7 echo "** Trapped CTRL-C"
8 }
9
10
11 f () {
12 for i in `seq 1 100`; do
13 sleep 1
14 echo -n "."
15 done
16 }

fal final de su código y eliminar el espacio delf ().Respuestas:
Esto se debe a que envía SIGINT al proceso en primer plano en lugar de a
bash(que ejecuta el script). Si desea hacer esto, haga que la función sea asíncrona y luego usewait(que actuará como se esperaba y usará la trampa).fuente
festá en una tuberíaecho 123 | f, entonces no está atrapando?(command | command) &Protip: envíe el proceso en primer plano un QUIT con Ctrl- \cuando Ctrl- C, - Z, - Dno funcionan.
Elimina trampas al final de la ejecución con
trap - list of signals hereDiversión en un sistema que no es de producción: intente establecer una trampa para todas las señales sensibles (por ejemplo, no KILL).
kill -l(no es una L minúscula, no un número 1 o una tubería |)fuente
Creo que deberías hacer que la función sea global
fuente
INTySIGINTson sinónimos, no habrá diferencia.