Rufen Sie ein Skript auf, wenn ein Bash-Skript fehlschlägt

0

Ich möchte ein Skript ausführen, das eine Website mit einem Apache-Server erstellt und hostet. Wenn etwas schief gelaufen ist, muss ich alle vorgenommenen Änderungen rückgängig machen, z. B. den erstellten Ordner löschen usw.

Ich weiß, dass set -edas Skript beim Erkennen eines Fehlers beendet wird.

Ich muss jedoch ein Skript ausführen, z. B. rollback.sh, und stattdessen einen Fehler feststellen, der beendet wird

Rajesh Rajendran
quelle
4
Würde createSite.sh || rollback.shausreichen?
Glenn Jackman
1
Ich denke, das ist die Antwort - er kann sie annehmen, wenn Sie sie als Antwort posten.
SiddharthaRT

Antworten:

1

Innerhalb des Skripts können Sie Folgendes verwenden trap:

err_handler () {
   /path/to/error/handling/script.sh
   exit
}

trap err_handler ERR

Da ERRgefangen ist, wenn alle Befehlsausgänge mit einem Nicht-Null - Exit - Code, err_handlerwird Funktion ausgeführt werden.

Sie können sich das set -eso vorstellen:

trap 'exit $?' ERR
muru
quelle