Was set -e in Bash tun?

Was set -e in Bash tun?
Set -e wird innerhalb der Bash verwendet, um die Ausführung sofort als Abfrage zu stoppen, während er einen Status ungleich Null hat. Diese Funktion wird auch verwendet, wenn Sie den Fehlerspeicherort im laufenden Code kennen müssen. Lassen Sie uns den Artikel fortsetzen, um das Konzept von „set -e“ in verschiedenen Aspekten von Codes zu erläutern.

Installieren Sie Bash -Erweiterungen unter Linux. Wenn es bereits installiert ist, müssen Sie die Version aktualisieren, da die Version über 4 liegen muss.

Beispiel 1

Hier brauchen wir eine Datei mit dem Bash -Code mit dem Bash -Code. Erstellen Sie also eine Datei mit einem Befehl "Touch" mit dem Ubuntu -Terminal. Das ist geschrieben als:

$ touch Datei1.Sch

Wir werden hier zwei Ansätze verfolgen. Einer besteht darin, "set -e" außerhalb des Funktionskörpers zu verwenden, während der andere es innerhalb der Funktion verwenden soll. Betrachten Sie eine Datei “Datei1.Sch". Wir brauchen die Datei mit einer Erweiterung von .sh wie wir den Code in Bash -Sprache schreiben. Dieses Beispiel befasst sich mit dem Hinzufügen einer Funktion namens "Helo".

In dieser Funktion möchten wir eine Zeile drucken. Da wir hier eine Funktion deklariert haben, muss der Funktionsaufruf hier erforderlich sein. Am Ende haben wir also den Namen der Funktion als Funktionsaufruf verwendet. Hier wird „set -e“ zu Beginn verwendet, was außerhalb des Körpers der Funktion ist.

Set -e

Setzen Sie -E.

Wir haben einen einfachen Texteditor verwendet, der standardmäßig im Ubuntu -System vorhanden ist.

$ bash Datei1.Sch

Verwenden Sie nun den zweiten Ansatz, bei dem wir in der Funktion „set -e“ verwenden müssen. Wir werden den Unterschied zwischen diesen Ansätzen sehen. Bearbeiten Sie den angegebenen Code, indem Sie "set -e" von außerhalb der Funktionskörper bis innerhalb des Körpers der Funktion „Helo“ ersetzen, während der verbleibende Code der vorherige ist wie der vorherige. Sie können über das eingefügte Bild überprüfen.

Führen Sie denselben Befehl erneut auf dem Terminal aus, um das Ergebnis zu erhalten.

Dies bedeutet, dass „set -e“ keine Änderung verursacht, wenn es innerhalb oder außerhalb der Funktionskörper verwendet wird.

Beispiel 2

Dies ist ein ganz einfach. Mit dem „Set -e“ kann das Terminal eine Ausnahme auslegen, in der er den Fehler findet, und dann die Code -Stopp -Ausführung. Dann wird die Fehlerfunktion hier deklariert. Der einzige Zweck dieser Funktion besteht darin, die Fehlermeldung zusammen mit der Zeilennummer anzuzeigen, die den Fehler enthält.

In diesem Beispiel gibt es etwas Besonderes, das die Verwendung des Schlüsselworts „Trap“ ist. Dieses Schlüsselwort ermöglicht die Verwendung einer integrierten Funktion, die die Zeilennummer des Fehlers aufnimmt und dann an die Fehlerfunktion weitergibt. Zu diesem Zweck der Fehleridentifikation und Anzeige müssen wir eine Anweisung oder eine Variable hinzufügen, die nicht in Bash enthalten ist oder eine aussagekräftige Linie mit der Änderung der Syntaxwerte verwenden.

FALL "ERROR $ linenoe" erregen

Nach diesem Code muss das Ergebnis den Fehler in Zeile 10 anzeigen.

Führen Sie den Code auf dem Terminal mit der Datei aus. Sie können erzählen, dass der Dateiname mit der Zeilennummer angezeigt wird, und eine Ausnahme, die zeigt, dass der Befehl nicht gefunden wird. Zweitens eine Nachricht der Funktion, um die Zeilennummer darzustellen, in der ein Fehler aufgetreten ist.

Beispiel 3

Dieses Beispiel befasst sich mit der Verwendung von zwei Bash -Dateien. Einer ist Datei1.SH und der andere ist Datei2.Sch. Betrachten Sie Datei2.Sh zuerst. Hier haben wir "set -e" verwendet und es wird in der anderen Datei nicht verwendet. In ähnlicher Weise haben wir in dieser Datei nur den Funktionsaufruf verwendet, während die gesamte Funktionsbehörde in der anderen Datei deklariert wird. Wir haben beide Dateien mit dem Schlüsselwort „Quelle“ verknüpft, damit der hier erstellte Funktionsaufruf die Funktion aus der anderen Datei ausführen kann.

4 Quelle “Datei1.Sch"

Danach wird im Funktionsaufruf auch ein Wort angezeigt.

Echo "Benachrichtigung: $ (Helo)"

"Helo" ist der Name der Funktion.

Betrachten Sie nun die andere Dateidatei1.Sch. In dieser Datei wird die Funktion helo1 () deklariert. In der Funktionskörper haben wir nur eine Nachricht angezeigt.

Echo "warte: $ 1"

Bewegen Sie sich auf die andere Funktion, die Helo () ist. Dies ist die gleiche Funktion, die in der ersten Datei, die wir besprochen haben. In dieser Funktion haben wir erneut einen Funktionsaufruf von Helo1 verwendet (). Dies wird über der aktuellen Funktion in derselben Datei über die aktuelle Funktion deklariert, sodass wir beide Dateien nicht mit dem Schlüsselwort "Quelle" verknüpfen müssen. Mit dem Funktionsaufruf wird eine Nachricht angezeigt:

Helo1 „Es gibt einen Fehler“

Die gesamte Leistung erfolgt so, dass wir die Datei2 ausführen werden.sh im Terminal. Daher wird der erste Funktionsaufruf ausgeführt und die Steuerung wird in Richtung Helo () in Datei1 in Richtung Helo () bewegt.Sch. Dadurch wird dieser Funktionsaufruf ausgeführt, und jetzt wird der Steuerelement auf die erste Funktion der Datei bewegt. Lassen Sie uns sehen, wie die Ausgabe angezeigt wird.

$ bash -Datei.Sch

Jetzt können Sie sehen, dass das Wort zuerst aus der Datei2 angezeigt wird.SH und dann die Funktion der Funktion "helo1 ()" dh "warten" und dann die Meldung der Funktion Helo (). Da wir "Exit 1" verwendet haben, wird das nicht geliefert, sodass es keine Rolle von "set -e" wieder gibt. Wenn der Funktionsaufruf nicht behandelt wird, muss sich ein Fehler durchsetzen.

Beispiel 4

Dieses Beispiel enthält ein vollständiges Verständnis von "set -e". Nehmen Sie in diesem Beispiel vier Funktionen. Wie wir wissen, dass der integrierte Satz-E verwendet wird, um den Code zu verlassen, wenn er einen Status ungleich Null erhält. In diesem Beispiel haben wir "0" nur für eine Funktion verwendet, die die erste ist. Alle anderen Funktionen geben 1 zurück 1. Dies bedeutet, dass der Code die Ausführung beendet, nachdem die erste Funktion angezeigt wurde. Aber es wird nicht. Hier haben wir "set +e" verwendet, was das Gegenteil von "set -e" ist. Immer wenn "festgelegt" den Code dazu zwang, die Ausführung zu beenden. "Set +e" wird vor dem Funktionsaufruf der ersten beiden Funktionen und "Set -e" vor dem Funktionsaufruf der letzten beiden Methoden deklariert.

Set +e

Jetzt werden die ersten beiden Funktionen ausgeführt. In der zweiten Funktion, da es sich um einen Wert ungleich Null handelt, zwingt der Compiler einen Fehler, aber „Set +e“ wird den Wert neutralisieren. Wenn es die Zeit für die dritte Funktion ist, werden beide Nachrichten von Echo angezeigt. Wenn das Steuerelement jedoch zum Wert „Rückgabe 1“ geht, wird der Code gestoppt. Wie hier haben wir nicht "set +e" verwendet. Deshalb wird die 4. Funktion hier nicht ausgeführt.

Führen Sie den Code im Terminal aus, damit Sie den resultierenden Wert sehen.

Abschluss

Dieses Tutorial zeigt die Arbeit von „set -e“. In den Beispielen wird es so verwendet, um die Ausführung zu beenden. Der Gegner „Set +E“ wird jedoch auch hier verwendet, um die Arbeit zu veranschaulichen.