So erfassen und behandeln Sie Fehler in Ihren Bash -Skripten

So erfassen und behandeln Sie Fehler in Ihren Bash -Skripten

Wir können den Befehl Trap verwenden, um das Fehlersignalsystem während der Skriptausführung vom System zu fangen. Dann können Sie einen Shell -Befehl ausführen oder eine Funktion aufrufen. Auf diese Weise können Sie Ihren benutzerdefinierten Skriptcode auf einem Fehler ausführen, der in einem Bash -Skript aufgetreten ist.

Dies kann hilfreich sein, um teilweise Änderungen, die Datenbankverbindungen oder den E -Mail -Status für die betroffenen Personen usw. zurückzuversetzen, usw. Sie können Trap -Befehle mit verwenden 'IRREN' Signale wie:

Trap 'on_error_function' errand 

Wenn ein Fehler in einem Shell -Skript generiert wird, wird eine Funktion mit dem Namen 'On_error_function' Ihres Shell -Skripts ausgeführt. Anstatt eine Funktion aufzurufen, können Sie einfach auch einen Befehl ausführen.

Beispiel: Führen Sie eine Funktion zum Fehler in Bash aus

Lassen Sie uns mit einem Beispiel verstehen. Erstellen Sie ein Beispiel -Shell -Skript und erstellen Sie eine Funktion mit jedem Namen. Dann fügen Sie die hinzu fangen Befehl mit der Funktion für IRREN Signal. Fügen Sie als nächstes einen einfachen Befehl hinzu, der einen Fehler erzeugt.

#!/usr/bin/env bash on_error () echo "Ein Fehler ist aufgetreten" Trap 'On_Error' Err ls ~/dire_not_exists
123456789#!/usr/bin/env bash on_error () echo "Ein Fehler ist aufgetreten" Trap 'On_Error' Err ls ~/dire_not_exists

Führen Sie das obige Skript aus und Sie sollten die folgenden Ergebnisse sehen:

Ausgabe: LS: Kann nicht zugreifen '/home/tecadmin/dir_not_exists': Keine solche Datei oder Verzeichnis Es ist ein Fehler aufgetreten 

Sie können sehen, dass der Fehler gefangen ist und die Funktion on_Error () wird vom Bash -Skript ausgeführt.

Beispiel: Führen Sie einen Befehl zum Fehler in Bash aus

Lassen Sie uns noch ein Beispiel sehen. Hier führen wir einen Befehl aus, wenn ein Fehler im Shell -Skript auftritt.

#!/usr/bin/env bash falle 'echo ohhh nein!'Err ls ~/dir_not_exists
12345#!/usr/bin/env bash falle 'echo ohhh nein!'Err ls ~/dir_not_exists

Im obigen Skript definieren wir keine separate Funktion. Führen Sie einfach einen Echo -Befehl zum Fehler aus. Führen Sie das obige Skript aus und sehen Sie die Ergebnisse an.

Ausgabe: LS: Kann nicht zugreifen '/home/tecadmin/dir_not_exists': Keine solche Datei oder Verzeichnis ohhh nein! 

Beispiel: Holen Sie sich die Zeilennummer des Fehlers aufgetreten

Sie können auch die Zeilennummer herausfinden, bei der der Fehler im Bash -Skript zusammen mit dem Skriptnamen aufgetreten ist. Verwenden Sie dazu den eingebauten "Anrufer" mit den Bash -integrierten "Anrufer".

#!/usr/bin/env bash on_error () echo "Fehler in: $ (Anrufer)"> & 2 Trap 'On_error' err ls ~/dire_not_exists
123456789#!/usr/bin/env bash on_error () echo "Fehler in: $ (Anrufer)"> & 2 Trap 'On_error' err ls ~/dire_not_exists

Führen Sie das obige Skript aus und sehen Sie die Ergebnisse an. Sie sehen den Skriptnamen und die Zeilennummer, bei der der Fehler aufgetreten ist.

Ausgabe: LS: Kann nicht zugreifen '/home/tecadmin/dir_not_exists': Keine solche Datei oder Verzeichnisfehler in: 9 gefunden: 9 ./Skript.Sch 

Abschluss

Danke, dass du diesen Artikel gelesen hast. Hoffentlich hilft Ihnen dieses Tutorial beim besseren Schreiben von Shell -Skripten, indem Sie den Fehler erfassen und Maßnahmen ergreifen.

Denken Sie auch daran, dass die Err -Trap nur die Laufzeitfehler auffängt. Wie wenn ein Befehl den Statuscode ungleich Null zurückgibt. Es fängt die Syntaxfehler nicht an, da im Fall des Syntaxfehlers das Skript fehlschlägt, ohne einen Befehl auszuführen.