Der Befehl Linux Set ist ein integrierter Shell-Befehl, mit dem Sie sowohl Shell- als auch Umgebungsvariablen anzeigen oder festlegen können. In diesem Handbuch behandeln wir den Befehl SET und zeigen, wie viele Möglichkeiten verwendet werden können, wie das Befehlszeilendienstprogramm verwendet werden kann.
Grundlegende Syntax
Der Befehl set nimmt die folgende Syntax an:
$ command -options Argumente
Befehlsoptionen
Es gibt eine ganze Reihe von Optionen, die mit dem SET -Befehl verwendet werden können. Lassen Sie uns einige von ihnen erkunden:
Werte beenden
Im Folgenden finden Sie die Shell -Exit -Werte, die dem Befehl SET zugeordnet sind:
0: Befehl war erfolgreich.
Setzen Sie den Befehl ohne Optionen
Ohne Argumente listet der Befehl SET alle Shell -Variablen auf, einschließlich ihrer Werte.
$ set
Stellen Sie die Positionsparameter mit dem Befehl SET ein
Der Befehl Linux -Set kann verwendet werden, um Werte den Positionsparametern Werte zuzuweisen. Ein Positionsparameter ist eine Variable in einem Shell -Programm, und sein Wert wird als $ n bezeichnet, wobei n eine Ziffer ist, die die Position des Parameters bezeichnet.
Der Wert von $ 1 ist der erste Positionsparameter nach dem Namen der Datei oder des Befehls. Der Wert von $ 2 ist der zweite Parameter und so weiter.
Angenommen, wir führen den unten angegebenen Befehl aus:
$ set rotblaugrün
Hier entspricht Rot dem Positionalparameter $ 1, Blau entspricht dem Parameter $ 2, und schließlich entspricht Grün $ 3.
So listen Sie alle Parameter in der Reihenfolge von $ 1 $ 2 $ 3 $ 3 aus. Führen Sie den folgenden Echo -Befehl aus:
$ echo "$*"
Um den ersten Parameter aufzulisten, führen Sie aus:
$ echo $ 1
Um den zweiten Parameter aufzulisten, rennen Sie:
$ echo $ 2
Usw.
Verwenden Sie den Befehl SET, um alle Positionsparameter zu veröffentlichen
Um die Positionsparameter zu verunreinigen, führen Sie den Befehl fest.
$ set --
Wenn Sie erneut versuchen, die Positionsparameter aufzulisten, erhalten Sie eine leere Ausgabe, was bedeutet, dass sie nicht festgelegt wurden.
Ignorieren Sie eine ungebundene Variable
Standardmäßig übersieht ein Shell -Skript eine undefinierte Variable. Im Skript myScript.SH unten gezeigt, die $ foo -Variable ist noch nicht definiert und existiert daher nicht.
Wenn das Skript ausgeführt wird, wird eine leere Zeile für die Zeile zurückgegeben, die eine nicht existierende Variable enthält und die folgende Zeile ausführt:
$ ./MyScript.Sch
Diese Anomalie ist unerwünscht, und Entwickler möchten im Falle von undefinierten Variablen benachrichtigt werden. Die SET -U -Anweisung zu Beginn des Skripts druckt einen Fehler in der Shell aus, wenn das Skript in eine undefinierte Variable ausgeführt wird.
Wenn das Skript noch einmal ausgeführt wird, wird der Fehler zu einer ungebundenen Variablen angezeigt.
Zeigen Sie einen Fehler an, wenn ein Befehl nicht vorhanden ist
Wenn ein Befehl in einen Fehler ausgeführt wird und nicht ausgeführt wird, wird die Bash -Shell die verbleibenden Befehle weiter ausführen. Nehmen Sie zum Beispiel das Shell -Skript unten:
Der Befehl Foobar ist nicht vorhanden, und auf der Bash-Shell sollte ein Fehler angezeigt werden, wenn das Skript ausgeführt wird, um anzuzeigen, dass das Skript in ein Problem. Dies geschieht jedoch nicht und die Shell führt zur Ausführung der nächsten Zeile wie gezeigt:
Wie beim vorherigen Beispiel ist dies keine gute Praxis beim Schreiben von Shell -Skripten, insbesondere für Sicherheit und Debuggen. Im Idealfall sollte das Skript anhalten, wenn es auf einen Fehler stößt. Um dieses Szenario anzugehen, definieren Sie die Richtlinie SET -E zu Beginn des Skripts wie gezeigt.
Wenn Sie versuchen, das Skript erneut auszuführen, werden Sie wie gezeigt auf den Fehler stoßen:
Zeigen Sie einen Fehler in Rohrbefehlen an
Die Richtlinie set -e funktioniert nicht, wenn es sich um Leitungsbefehle handelt. Betrachten Sie das Drehbuch unten:
Wenn Sie das Skript ausführen, gibt es einen Fehler zurück, führt jedoch weiterhin den nachfolgenden Befehl aus:
Um diese Hürde zu überwinden, geben Sie die SET -EO -Pipefail -Direktive wie gezeigt weiter:
$ set -eo pipefail
Diesmal beendet das Skript die nächste Zeile und führt nicht aus.
Definieren Sie Allexport und benachrichtigen Sie Optionen
Um Allexport zu setzen und Optionen zu benachrichtigen, führen Sie den Befehl aus:
$ set -o alexport -o benachrichtigen
Abschluss
Dies waren einige Beispiele dafür, wie Sie den Befehl SET in Ihren Shell -Skripten verwenden können. Wie festgestellt, kann der Befehl SET ein praktisches Tool beim Einstellen von Positionsparametern und beim Debuggen Ihrer Shell -Skripte sein.