Verwendung des Befehls Shift in Bash

Verwendung des Befehls Shift in Bash
Wenn die Befehlszeilenargumente Eingaben vom Benutzer abnehmen, enthält das erste Argument den Skriptnamen. Manchmal muss der Skriptname für Programmierzwecke weglassen. Diese Aufgabe kann problemlos mit einer beliebigen Schleife in Bash erfolgen. Verwendung der 'SchichtDer Befehl ist eine weitere Möglichkeit, die Aufgabe zu erledigen. Dieser Befehl wird verwendet, um standardmäßig einen Positionsparameter für Position nach links zu verschieben. Die unterschiedlichen Verwendungen der 'SchichtDer Befehl in Bash hat in diesem Tutorial gezeigt.

Syntax:

Die Syntax des Befehls "Shift" ist unten angegeben. Dieser Befehl hat ein optionales Argument, mit dem die Anzahl der Positionen festgelegt wird, die nach links verschoben werden. Das Argument muss positiv sein. Wenn der Argumentwert auf 0 gesetzt ist, wird kein Befehlszeilenargument verschoben. Wenn kein Argument verwendet wird, wird ein Befehlszeilenargument standardmäßig verschoben.

Verschiebung [n]

Beispiel 1: Drucken Sie alle Befehlszeilen-Argumentwerte aus

Erstellen Sie eine Bash -Datei mit dem folgenden Skript, um die Befehlszeilenargumentwerte "für" für "Schleife ohne" Verschiebungsbefehl "und" Schleife mit "Svert" -Befehl zu drucken. Jeder Argumentwert wird in der Variablen gespeichert, die Wert wenn das für Die Schleife wird ausgeführt und diese Variable wird später gedruckt. Der Start Variable hat in der verwendet während Schleife zum Lesen Sie jeden Argumentwert mithilfe des 'SchichtBefehl und beenden Sie die Schleife, wenn alle Befehlszeilenargumente gedruckt werden. Eine Gegenvariable, ich, wurde im Skript verwendet, um die Anzahl des Arguments anzuzeigen. Wenn zur Ausführungszeit kein Argument für Befehlszeilen angegeben wird, wird für das erste Argument eine leere Zeichenfolge festgelegt, und nichts wird gedruckt.

#!/Bin/Bash
#Print der Befehlszeile-Aegument-Werte für und während der Schleife
#Setzen Sie den Zähler
I = 1
Echo "Die Argumentwerte ohne Verschiebungsbefehl:"
#Alle Werte für die Schleife verwenden
für Wert in "$@"
Tun
echo "Argument nein. $ i = $ value "
((i ++))
Erledigt
#Initialisieren Sie den Zähler erneut
I = 1
#Setzen Sie das optionale Argument
start = $ 1:-""
Echo "die Argumentwerte mithilfe von SHIFT -Befehl:"
#Alle Werte verwenden, um die Schleife zu verwenden
während ["$ start" != ""];
Tun
echo "Argument nein. $ i = $ start "
#Schift jedes Argument durch 1
Schicht
Start = $ 1
((i ++))
Erledigt

Ausgang:

Gemäß der folgenden Ausgabe wurde das obige Skript mit drei Befehlszeilen-Argumentwerten ausgeführt. Die Argumentwerte werden zweimal mit der für die Loop und während der Schleife mit dem 'gedrucktSchicht' Befehl.

Beispiel-2: Drucken Sie die Argumentwerte einer gleichmäßigen Position aus

Im vorherigen Beispiel hat kein Argument mit dem 'verwendetSchichtBefehl, und der Argumentwert wurde um 1 nach links verschoben. Die Verwendung des optionalen Arguments der ''SchichtIn diesem Beispiel wird der Befehl angezeigt. Erstellen Sie eine Bash -Datei mit dem folgenden Skript, um die Befehlszeilenargumentwerte der geraden Position zu drucken. Die Gesamtzahl der Befehlszeilenargumente hat in der Variablen gezählt und gespeichert gesamt, und es wurde in der verwendet während Schleife, um die Schleife zu iterieren. Der 'SchichtDer Befehl wurde mit dem Argumentwert 2 verwendet, um zwei Befehlszeilenargumente in jeder Iteration der Schleife zu verschieben. Jedes Befehlszeilenargument der gerade Positionen wird nach Ausführung des Skripts mit Platz gedruckt.

#!/Bin/Bash
#Befolgen Sie die Gesamtzahl der Befehlszeilenargumente
Total = $##
echo "Gesamtargumente sind: $ Total"
Echo "Die Argumentwerte der geraden Position sind:"
während [$ total -ge0];
Tun
#Prinke den Argumentwert mit dem Speicherplatz
echo -n $ 1 "" "
#Zwei Argumente
Verschiebung 2
#Dekrement den Zähler durch 2
((Gesamt = $ Gesamt-2)))
Erledigt
#Add New Line
Echo

Ausgang:

Gemäß der folgenden Ausgabe hat das obige Skript sechs Befehlszeilen-Argumentwerte ohne den Skriptnamen ausgeführt. Nach dem Drucken des Wertes 89 beträgt der nächste Wert der geraden Position 34, und der nächste Wert der geraden Position beträgt 12.

Beispiel-3: Lesen Sie die bestimmten Werte spezifischer Argumente

Die Art und Weise, wie bestimmte Befehlszeilenargumentwerte mit der 'gelesen werden können'SchichtIn diesem Beispiel wurde der Befehl ohne Verwendung einer Schleife gezeigt. Erstellen Sie eine Bash -Datei mit dem folgenden Skript. Die Gesamtzahl der Befehlszeilenargumente wurde im Skript gezählt, und wenn der Gesamtwert weniger als 6 beträgt, wird das Skript durch Anzeigen einer Fehlermeldung beendet. Wenn die sechs Befehlszeilenargumente ordnungsgemäß angegeben sind, enthält das zweite Argument den Hostnamen, das vierte Argument enthält den Benutzernamen, und das sechste Argument enthält das Passwort. Der Hostname wird in einer Variablen gespeichert, indem ein Argument übrig verschoben wird. Der Benutzername wird in einer Variablen gespeichert, indem zwei übliche Argumente verschoben werden. Das Kennwort wird in einer Variablen gespeichert, indem zwei weitere Argumente noch einmal verschoben werden. Als nächstes werden die Werte für Hostname, Benutzername und Kennwort mit drei Zeichenfolgenwerten verglichen, um den Benutzer zu authentifizieren.

#!/Bin/Bash
#Befolgen Sie die Gesamtzahl der Befehlszeilenargumente
Total = $##
#Überprüfen Sie, ob die 6 Argumentwerte angegeben sind oder nicht
wenn [$ Total -LT6]; Dann
echo "ungültige Anzahl von Argumenten."
anders
#Schaufen Sie ein Argument
Verschiebung 1
#Lesen Sie den Wert des Hostnamens
Hostname = $ 1
#Zwei Argumente
Verschiebung 2
#Lesen Sie den Wert des Benutzernamens
Benutzername = $ 1
#Zwei Argumente
Verschiebung 2
#Lesen Sie den Wert des Passworts
Passwort = $ 1
fi
#Überprüfen Sie die Werte für die Authentifizierung
if [[$ hostname == "localhost" && $ username == "fahmida" && $ password == "1234"]]; Dann
echo "Authentifizierung erfolgreich."
anders
Echo "Authentifizierung erfolglos."
fi

Ausgang:

Gemäß der Ausgabe wurde das obige Skript zweimal mit sechs Argumentwerten ausgeführt. In der ersten Ausführung wurden die gültigen Daten übergeben und eine Erfolgsnachricht wurde gedruckt. Bei der zweiten Ausführung wurden ungültige Daten übergeben, und eine Fehlermeldung wurde gedruckt.

Abschluss:

Der Befehl 'Shift' ist ein sehr hilfreicher Befehl zum Lesen bestimmter Befehlszeilenargumentwerte. In diesem Tutorial wurden verschiedene Verwendungen dieses Befehls beschrieben, indem mehrere Beispiele verwendet wurden, um den Lesern zu helfen, den Zweck der Verwendung dieses Befehls im Bash -Skript zu verstehen.