¿Cómo iniciar el siguiente archivo bash solo si el anterior fue exitoso?

¿Cómo iniciar el siguiente archivo bash solo si el anterior fue exitoso?

En el archivo bash myBig.shllamo a otros dos archivos bash así:

/bin/bash myBuildShortServer.sh
/bin/bash myStart.sh

Funciona... pero tiene un problema. Quiero comenzarmyStart.sh sólo después del éxitoejecutar myBuildShortServer.sh.

El contenido de myBuildShortServer.shes este:

mvn install -Pruntime -DskipTests=true -f pom-server.xml

El archivo bash myBuildShortServer.shsimplemente inicia las tareas (objetivos) de maven. Y cuando finalice con éxito las tareas, se imprime en la consola smt de esta manera:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  30.254 s
[INFO] Finished at: 2022-06-06T12:05:43+03:00
[INFO] ------------------------------------------------------------------

Entonces necesito empezarmyStart.sh SOLOdespués de myBuildShortServer.shterminar con éxito.

¿Es posible?

Respuesta1

Si el primer script es solo esta línea, puedes probar algo como:

 myBuildShortServer.sh && myStart.sh

Por supuesto, deberías hacer que los scripts sean ejecutables:

chmod +x <name of the scripts>

Respuesta2

Agregue a myBuildShortServer.shun código para establecer el código de error del script con el exitcomando bash, para propagar el código de error devuelto por mvn, así:

mvn install ...
rc=$?
if [ $rc -ne 0 ] ; then
  echo Could not perform mvn install, exit code [$rc]; exit $rc
fi
exit 0

Luego podría probar el código de error del primer script y evitar ejecutar el siguiente script si no es cero.

información relacionada