Gibt es einen TRY CATCH-Befehl in Bash?

Bash” unterstützt nicht das „versuchen/fangen“ Befehl. Es gibt jedoch auch andere Möglichkeiten, seine Funktionalitäten anzuwenden, beispielsweise die „if/else“-Anweisungen, „OR“-Operatoren, den „trap“-Befehl oder das „-x“-Flag.

„Try-Catch“ ist ein Programmierbegriff, der zur Behandlung von Ausnahmen verwendet wird. Mit einfachen Worten: Der „try“-Block versucht, eine Arbeit zu erledigen, und wenn ein Fehler auftritt, beispielsweise wenn eine Datei nicht gefunden wurde, löst er eine Ausnahme aus, die in den „catch“-Block kopiert werden kann.

In diesem Leitfaden werden die Ansätze untersucht, die als Ersatz für den Befehl „try/catch“ verwendet werden können.

Überprüfen Sie den „Exit-Status“

Alle Befehle generieren einen einstelligen Wert („0” für „wahr“ und „1” für „falsch“). Dies geschieht mit dem „set -e“ Möglichkeit. Diese Option veranlasst die Bash, sofort zu beenden, wenn ein Befehl im Skript mit einem Code ungleich Null beendet wird. Im folgenden Beispiel installiert das Skript Firefox auf dem System. Nach erfolgreicher Ausführung wird die Meldung „Befehl erfolgreich„, wie folgt:

#!/bin/bash

set -e

sudo apt Firefox installieren

echo „Befehl erfolgreich“

Stellen Sie vor der Ausführung sicher, dass Sie ihm Ausführungsberechtigungen erteilen (das obige Skript heißt „script.sh“) mit dem Befehl chmod mit dem Flag +x:

$ sudo chmod +x script.sh

Der oben ausgeführte Befehl bestätigt, dass der Datei „Ausführungsberechtigungen“ erteilt wurden.script.sh“. Um es jedoch auszuführen, wenden Sie den folgenden Befehl an:

$ bash script.sh

Wenn Sie sich das obige Bild ansehen, ist es offensichtlich, dass der Befehl erfolgreich ausgeführt wurde, da die Meldung „Befehl erfolgreich“ wird angezeigt. Es könnte mehrere Szenarien geben, in denen Sie den Echo-Befehl verwenden können, um das „Exit-Status”direkt nachdem der Befehl ausgeführt wurde.

Wie macht man den „Trap“-Befehl zur Funktion „TRY CATCH“?

Der „fangenDer Befehl funktioniert basierend auf dem Signale vom Betriebssystem oder vom Benutzer an ihn gesendet (durch Drücken von „STRG+C” um das Programm zu unterbrechen). Es handelt sich um einen Auslöser, der eine Reaktion auf einen bestimmten Befehl darstellt. Das folgende Skript wird beispielsweise ausgeführt, bis der Benutzer „STRG+C“. Sobald die Taste gedrückt wird, wird die Meldung „Falle funktioniert“ angezeigt und „5“ Sekunden lang in den Ruhezustand versetzt, bevor die Kontrolle an den Benutzer zurückgegeben wird:

#!/bin/bash

trap ‚echo „trap hat funktioniert“‚ INT

(

Falle “ INT

Schlaf 5

Echo „fertig“

) &

Warten

Das obige Skript heißt „script.sh.” Führen wir es aus, um die Ergebnisse anzuzeigen:

$ bash script.sh

Im obigen Terminal ist zu sehen, dass wir beim Drücken von „STRG+C“, wurde gedruckt „Falle hat funktioniert“, und es kann mehrere Szenarien geben, in denen es verwendet werden kann. Im folgenden Skript wird beispielsweise der Dienst angehalten und neu gestartet, wenn er ausgeführt wird. Nehmen wir in diesem Fall an, dass der Dienst „mysql“ ist:

#!/bin/bash

Funktion beenden {

echo „Dienst gestartet“

Sudo-Dienst MySQL starten

}

Falle beenden EXIT

echo „Dienst gestoppt“

Sudo-Dienst MySQL stoppen

Das Skript heißt „script.sh“. Führen wir es aus, um die Ausgabe anzuzeigen:

$ bash script.sh

Wie im obigen Terminal zu sehen ist, stoppt es zunächst den Dienst und startet ihn dann erneut. Wenn Sie den Dienst direkt nach dem Stoppen sofort starten möchten, drücken Sie „STRG+C”:

$ bash script.sh

Die obigen Beispiele ähneln dem „Try/Catch“ in der Weise, dass die Ausführung eines Skripts mit mehreren Befehlen lange dauert. Sie können es beseitigen, indem Sie „STRG+Z”-Tastenkombinationen, es wird jedoch nicht die über die „Taste“ gedruckte Meldung angezeigt.Echo“ Befehl. Aber wenn die „fangen”-Befehl verwendet wird, ist es einfacher zu erkennen, welcher Befehl gut funktioniert und welcher nicht.

Wie kann ich die Ausgabe mit dem Flag „-x“ in Bash verfolgen?

Der „-XDas Flag wird zum Debuggen eines Bash-Skripts verwendet. Es interpretiert jede ausgeführte Zeile und zeigt alles im Skript an. Um es zu verwenden, fügen Sie ein vorheriges „-X” beim Ausführen des Befehls, wie unten gezeigt:

bash -x script.sh

Das obige Bild zeigt die Parameter des Skripts im gleichen Format an, in dem es ausgeführt wird.

Wie erzwinge ich das Beenden, wenn in Bash ein Fehler erkannt wird?

Der „Satz” wird mit „ verwendeterrexit“ oder „-e” in Bash zum Beenden. Es bewirkt die automatische Beendigung des Befehls, wenn ein Fehler auftritt. Diese Option weist „Bash” um das Skript sofort zu beenden, wenn ein Befehl einen Exit-Status ungleich Null zurückgibt, was auf einen Fehler hinweist.

Es folgt ein Beispielskript, in dem die Systemrepositorys aktualisiert, Python installiert, Git geklont, die Anforderungen für Python installiert und schließlich der Server gestartet wird:

#!/bin/bash

Sudo apt-get update

Sudo apt install git curl python3-pip

Git-Klon https://github.com/example/repo.git

pip3 install -r Anforderungen.txt

python3 app.py

Es trägt den Namen „script.sh“. Um es auszuführen, wenden Sie den unten angegebenen Befehl wie beschrieben an:

$ bash script.sh

Der oben angegebene „Benutzername“ und das „Passwort“ für GitHub sind falsch, was zu einem Fehler führt, der zur unten angegebenen Beendigung des Skripts führt:

Wie oben zu sehen ist, wird das Skript sofort beendet, sobald ein Fehler auftritt.

Abschluss

Das Bash-Scripting unterstützt nicht das „versuchen/fangen”-Anweisung wie die meisten anderen Codierungssprachen. Es gibt jedoch auch andere Alternativen, um dieselbe Funktionalität anzuwenden, z. B. das Aktivieren des „Exit-Status“, Anwendung der „fangen”-Befehl oder Verfolgen der Ausgabe mit dem „-X”-Flag, was ebenfalls nützlich sein kann. Außerdem kann das Skript sofort beendet werden, sobald ein Fehler auftritt, indem Sie den Befehl „set -e“ Befehl. In diesem Leitfaden werden der Status des Befehls „try/catch“ in Bash und seine Alternativen erläutert.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen