Как запустить следующий файл bash только в случае успешного выполнения предыдущего?

Как запустить следующий файл bash только в случае успешного выполнения предыдущего?

В bash-файле myBig.shя вызываю еще два bash-файла следующим образом:

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

Это работа... но есть одна проблема. Я хочу начатьmyStart.sh только после успехавыполнять myBuildShortServer.sh.

Содержание myBuildShortServer.shследующее:

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

Файл bash myBuildShortServer.shпросто запускает задачи maven (цели). И когда задачи успешно завершатся, выведите в консоль smt, как это:

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

Итак, мне нужно начать.myStart.sh ТОЛЬКОпосле myBuildShortServer.shуспешного завершения.

Является ли это возможным?

решение1

Если первый скрипт состоит только из этой строки, вы можете попробовать что-то вроде:

 myBuildShortServer.sh && myStart.sh

Конечно, вам следует сделать скрипты исполняемыми:

chmod +x <name of the scripts>

решение2

Добавьте к myBuildShortServer.shкоду установку кода ошибки скрипта с помощью exitкоманды bash, чтобы распространить код ошибки, возвращаемый mvn, например:

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

Затем вы можете проверить код ошибки первого скрипта и избежать выполнения следующего скрипта, если он не равен нулю.

Связанный контент