Estoy creando un script de Shell que tiene una iffunción como esta:
if jarsigner -verbose -keystore $keyst -keystore $pass $jar_file $kalias
then
echo $jar_file signed sucessfully
else
echo ERROR: Failed to sign $jar_file. Please recheck the variables
fi
...
Quiero que la ejecución del script finalice después de mostrar el mensaje de error. ¿Como puedo hacer esto?

Si coloca
set -euna secuencia de comandos, la secuencia de comandos finalizará tan pronto como falle cualquier comando dentro de ella (es decir, tan pronto como cualquier comando devuelva un estado distinto de cero). Esto no le permite escribir su propio mensaje, pero a menudo los mensajes del comando que falla son suficientes.La ventaja de este enfoque es que es automático: no corre el riesgo de olvidarse de lidiar con un caso de error.
Los comandos cuyo estado es probado por un condicional (como
if,&&o||) no terminan el script (de lo contrario, el condicional no tendría sentido). Un modismo para el comando ocasional cuyo fracaso no importa escommand-that-may-fail || true. También puedeset -edesactivar una parte del script conset +e.fuente
-xbandera con la-ebandera es suficiente para saber dónde está su programa al salir. Eso implica que el usuario del script también es el desarrollador.Si desea poder manejar un error en lugar de salir a ciegas, en lugar de usar
set -e, use atrapen laERRpseudo señal.Se pueden configurar otras trampas para manejar otras señales, incluidas las señales habituales de Unix más las otras pseudo señales
RETURNy BashDEBUG.fuente
Aquí está la forma de hacerlo:
fuente
exit 1es todo lo que necesitas. El1es un código de retorno, por lo que puede cambiarlo si quiere, por ejemplo,1significar una ejecución exitosa y-1significar una falla o algo así.fuente
testo&&o||.