señal de trampa de costumbre en ksh
-
11-10-2019 - |
Pregunta
¿Hay una manera para mí para implementar señales falsas costumbre en ksh? Actualmente estoy capturando la señal ERR y salir. Sin embargo, debido a un cambio, hay llamadas que no pueden regresar éxito, sin embargo, que es una condición válida. En tal caso, yo quiero estar seguro de que esta llamada genera una señal diferente o manejar la ERR diferente. ¿Hay una manera de hacer eso?
Solución
Se puede utilizar kill
para enviar cualquier señal que desea el shell actual. Puede utilizar exit
en un subnivel o return
en una función para establecer cualquier código de error que desea.
Trate de este script:
#!/bin/ksh
trap 'echo USR1 signal processed' USR1
trap 'echo ERR signal processed' ERR
[[ $1 == a ]] && kill -s USR1 $$ || (exit 1)
echo "done"
Ejemplo:
$ ./testsignal
ERR signal processed
done
$ ./testsignal a
USR1 signal processed
done
Otros consejos
Tal vez usted podría simplemente envolver los estados cuyos códigos de salida se quiere tratar especialmente en una construcción que simplemente hacer lo que quiera (el empleo de "u" o "si no" construcciones y el análisis de los códigos de salida).
Esto parece ser un estilo de programación más limpio tanto, no es cierto?