En el archivo bash myBig.sh
llamo 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.sh
es este:
mvn install -Pruntime -DskipTests=true -f pom-server.xml
El archivo bash myBuildShortServer.sh
simplemente 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.sh
terminar 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.sh
un código para establecer el código de error del script con el exit
comando 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.