El comando incorporado exit
sale del shell (de la referencia de Bash ):
exit [n]
Salga del shell, devolviendo un estado de n al padre del shell. Si se omite n, el estado de salida es el del último comando ejecutado. Cualquier trampa en EXIT se ejecuta antes de que finalice el shell.
La ejecución hasta el final del archivo también sale, devolviendo el código de retorno del último comando, por lo que sí, una final exit 0
hará que el script salga con un estado exitoso independientemente del estado de salida de los comandos anteriores. (Es decir, suponiendo que el script llegue al final exit
). Al final de un script, también puede usar true
o :
para obtener un código de salida de cero.
Por supuesto, más a menudo lo usarías exit
desde adentro if
para terminar el script en el medio.
Deben imprimir un 1 ( $?
contiene el código de salida devuelto por el comando anterior):
sh -c "false" ; echo $?
sh -c "false; exit" ; echo $?
Si bien esto debería imprimir un 0:
sh -c "false; exit 0" ; echo $?
No estoy seguro de si el concepto del script "falla" cuando se ejecuta un exit
sentido, ya que es posible que algunos comandos ejecutados por el script fallen, pero el script en sí mismo tenga éxito. Depende del autor del guión decidir qué es un éxito y qué no.
Además, el rango estándar para los códigos de salida es 0..255. El shell utiliza códigos superiores a 127 para indicar un proceso terminado por una señal, pero se pueden devolver de la manera habitual. La wait
llamada al sistema en realidad devuelve un valor más amplio, y el resto contiene bits de estado establecidos por el sistema operativo.
exit 0
, saldrá con el código de salida de 0 independientemente de lo que ocurra dentro del script.