
Tengo dificultades para localizar una lista completa y actualizada de códigos de error de Bash. p.ej:
$ udevadm info /dev/sdx; echo Exit code $?
Unknown device, --name=, --path=, or absolute path in /dev/ or /sys expected.
Exit code 4
¿Cómo se supone que uno debe buscar esos códigos de salida?
Respuesta1
Hay un puñado de códigos de salida consignificados especiales reservados:
Código de salida Número Significado 1 Catchall para errores generales 2 Uso indebido de las funciones integradas del shell (según la documentación de Bash) 126 El comando invocado no se puede ejecutar 127 "comando no encontrado" 128+n Señal de error fatal "n" 130 Script terminado con Ctrl-C 255* Estado de salida fuera de rango
Todo lo que esté por debajo de 125 es un juego limpio para los desarrolladores y, en realidad, sólo se puede adivinar, ya quel0b0 notas en su respuesta, leyendo la man
página de la aplicación, o el código fuente, para determinar qué significa el código (si es que está documentado).
Respuesta2
tl; drLos códigos de salida son específicos de la aplicación.
Hay algunas convenciones vagas. false
y cualquier cosa exitosa con el prefijo !
(como ! true
) en shells POSIX devuelve el código de salida 1, pero un desarrollador puede usar cualquier código de salida entre 0 y 255 para lo que quiera. En última instancia hay que mirar su documentación (en el mejor de los casos) o el código (en el peor de los casos) para saber qué significa. Para programas con man
páginas, los códigos de salida a menudo aparecerán en una sección denominada EXIT STATUS
(herramientas GNU como find
).
Algunos significados populares se enumeran en /usr/include/sysexits.h
; trato de usarlos siempre que sea posible. Como@AnsgarEsztermann señala, estas no son una referencia de Bash, ni siquiera una referencia de aplicación, excepto para aquellos que eligen usarla (principalmente desarrolladores de C/C++).según el ABS).