Wie kann ich die nächste Bash-Datei nur starten, wenn die vorherige erfolgreich war?

Wie kann ich die nächste Bash-Datei nur starten, wenn die vorherige erfolgreich war?

In der Bash-Datei myBig.shrufe ich zwei weitere Bash-Dateien wie folgt auf:

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

Es ist Arbeit... aber es gibt ein Problem. Ich möchte anfangenmyStart.sh erst nach Erfolgausführen myBuildShortServer.sh.

Der Inhalt myBuildShortServer.shist dieser:

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

Die Bash-Datei myBuildShortServer.shstartet einfach Maven-Aufgaben (Ziele). Und wenn die Aufgaben erfolgreich abgeschlossen sind, wird in der Konsole smt wie folgt gedruckt:

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

Also muss ich anfangenmyStart.sh NURnach myBuildShortServer.shErfolg beenden.

Ist es möglich?

Antwort1

Wenn das erste Skript nur aus dieser Zeile besteht, können Sie Folgendes versuchen:

 myBuildShortServer.sh && myStart.sh

Natürlich sollten Sie die Skripte ausführbar machen:

chmod +x <name of the scripts>

Antwort2

Fügen Sie einem Code hinzu myBuildShortServer.sh, den Fehlercode des Skripts mit dem Bash- exitBefehl festzulegen, um den von zurückgegebenen Fehlercode mvnwie folgt weiterzugeben:

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

Sie können dann den Fehlercode des ersten Skripts testen und die Ausführung des folgenden Skripts vermeiden, wenn dieser ungleich Null ist.

verwandte Informationen