Quiero saber qué es la salida 99 y por qué la usaría y cuáles son los usos importantes de ella.
Por ejemplo , «Estoy usando exit 99
.
Comentarios
- Respuesta bastante similar a SO: " ¿Por qué devolver un errno negativo? (P. Ej., Return -EIO) "
Respuesta
No tiene importancia salir con el código 99, aparte de tal vez en el contexto de un programa específico.
De cualquier manera, exit
sale del shell con un cierto código de salida, en este caso, 99. Puede encontrar más información en help exit
:
exit: exit [n] Exit the shell. Exits the shell with a status of N. If N is omitted, the exit status is that of the last command executed.
Comentarios
Respuesta
Además de @Chris Down, hay un código de retorno reservado para el shell, que tiene un significado especial:
RETVAL Meaning 1 General errors 2 Misusage 127 Command not found
Puede consultar this para más detalles.
Comentarios
- @MrLister: Sí, mi mistypo, ¡solucionado!
- Todavía falta un
s
allí (" Misuage "?)
Responda
Normalmente, si termina su script en algún momento con:
exit 0
El shell obtendrá un 0 como código de retorno . Este cero significa todo estaba bien .
Sin embargo, si su programa ha encontrado alguna condición de error, debe salir con un código de retorno distinto de cero, para informar al shell que algo salió mal. Si no quiere ser más específico, simplemente puede usar 1.
exit 1
Sin embargo, puede informar al shell de un tipo particular de fallas usando otros números. Por ejemplo, bash
devuelve un 127 para programa no encontrado . Por lo tanto, si documenta el comportamiento de su script, puede hacer algo útil después ejecutándolo comprobando el valor de la variable especial $?
, que contiene el código de retorno del último programa ejecutado.
Miré esto hace un tiempo y encontré que, por ejemplo, FreeBDS tenía algunas convenciones muy útiles con respecto a los códigos de salida, documentadas en man 3 sysexits
Comentarios
- " El shell obtendrá un 0 como código de retorno " incorrecto,
exit
sin parámetros sale con el código de estado del último comando ejecutado (ver pub s.opengroup.org/onlinepubs/009695399/utilities/exit.html ) - Gracias, mi error de larga data solucionará la respuesta.
- Genial, voto negativo eliminado 🙂
Respuesta
Existe una convención muy antigua (en Unix) para devolver rangos de estado:
- 0 significa éxito
- los números positivos significan problemas menores, pero esencialmente la tarea completada
- los números negativos significan un error crítico (p. ej. disco lleno, archivo no encontrado)
Exactamente lo que significan esos números individuales positivos y negativos depende del programador. A veces puede elegirlos por compatibilidad con otros programas similares (por ejemplo, herramientas Gnu). @Gnouc enumera algunos.
No, no conozco ningún significado especial para salir del código 99, nunca lo vi usado. Tal vez signifique «No hay suficiente cerveza»
Ver:
- respuesta a SO: «¿Por qué devolver un errno negativo? (p.ej.return -EIO) « también
- muestra la lista de códigos de error estándar de Unix seleccionados de errno.h , aunque estos son positivos .
Comentarios
- Nunca escuché de esa convención de Unix. Y sus dos referencias no apoyan su afirmación sobre esa convención.
- La primera referencia sí. Hay 1,67 millones de visitas de Google en números negativos positivos de estado de retorno de Unix .
- Hay una pequeña cantidad de valores de retorno negativos especificados en POSIX.1 pero estos son para API de programación
Respuesta
Algunos programadores proporcionarán muchos códigos de error diferentes comenzando con 1. Las nuevas versiones pueden introducir nuevos códigos de error específicos, por lo que, ¿qué código debería usarse para
«todos los demás errores / error no especificado»? Los códigos de salida se truncarán en 255, por lo que elegiría 99 como «otro error» .
$?
para llegar a él.