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?

¿Fue útil?

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?

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