Wie übergebe ich ein Argument in einem Bash-Skript?

How Do I Pass Argument Bash Script



Die meisten Benutzer von Linux Mint 20 stecken fest, wenn sie ein Argument in einem Bash-Skript übergeben. Sie können die Argumente an jedes beliebige Bash-Skript übergeben, wenn es ausgeführt wird. Es gibt mehrere einfache und nützliche Möglichkeiten, Argumente in einem Bash-Skript zu übergeben. In diesem Artikelleitfaden informieren wir Sie über einige sehr einfache Möglichkeiten zum Übergeben und Verwenden von Argumenten in Ihren Bash-Skripten.

Übergeben von Argumenten mit Standardvariablen:

Erstellen Sie mit dem Touch-Befehl eine neue Datei mit einem beliebigen Namen, z. B. file.sh.







$berührenDateiname



Öffnen Sie diese neu erstellte Datei und fügen Sie ein Bash-Skript hinzu. Ich habe einige Standardvariablen hinzugefügt, z.B. 1 $, 2 $ und 3 $ folglich. Alle Argumente, die über das Terminal übergeben werden, werden in den angegebenen Variablen gespeichert.







Sie müssen diese Datei mit dem Befehl ./ gefolgt von einigen Argumenten ausführen. Wie Sie im Bild sehen können, tritt bei der Übergabe der Argumente ein Fehler auf: Permission Denied. Dies liegt daran, dass diese Datei keine Ausführungsrechte hat.

$./Dateiname Argument1 Argument2 Argument

Um die Ausführungsrechte für diese Datei zu erteilen, verwenden Sie dazu den Befehl sudo chmod.



$sudo chmod+x Dateiname

Führen Sie die Datei nun erneut mit dem gleichen Befehl aus. Diesmal habe ich verschiedene Argumente geliefert. Sie werden sehen, dass die neu übergebenen Argumente in den Standardvariablen gespeichert werden.

Übergeben des Shell-Skriptnamens als Argument:

Verwenden Sie nun dieselbe alte Datei file.sh mit einer kleinen Änderung der Standardvariablen. Sie müssen die Variable $0 wie gezeigt im Skript hinzufügen.

Beim Ausführen des gleichen ./ Shell-Skriptbefehls wird der Name Ihres Shell-Skripts, z. ./filename wird als Argument in der Variablen $0 gespeichert.

Übergeben von Argumenten als Array an Variable:

Beginnend mit der gleichen Datei file.sh müssen Sie einige zusätzliche Zeilen in das alte Skript einfügen. Deklarieren Sie eine Variable namens array. Fügen Sie eine Standardvariable [email protected] hinzu, die die vom Benutzer eingegebenen Argumente als Array speichert. Diese Argumente werden in ein Variablenarray geparst. Die letzte Zeile zeigt alle Argumente des Variablenarrays sortiert nach der Indexnummer an.

Führen Sie das Shell-Skript ./ aus. Sie werden sehen, dass die Argumente oder Werte angezeigt werden, die als Array in [email protected] gespeichert sind und in das Variablenarray geparst wurden, aber nicht den Shell-Skriptnamen in der zweiten echo-Anweisung. Sie erhalten die folgende Ausgabe.

$./Dateiname Argument1 Argument2 Argument

Verwenden Sie dieselbe Datei mit demselben Skript. Entfernen Sie einfach das ${array[3]} aus der letzten Zeile wie im Bild deutlich.

Nach der Ausführung des Befehls ./ sehen Sie eine ähnliche Ausgabe wie im obigen Beispiel ohne Änderung.

Sie können das gleiche Ergebnis auch erzielen, indem Sie die letzte Zeile des Bash-Skripts durch ein einzelnes Wort ersetzen. Sie müssen nur [email protected] in der echo-Anweisung hinzufügen, und es werden die Argumente angezeigt, die in diesem Variablenarray vorhanden sind.

Wenn Sie den Befehl ./ erneut ausführen, erhalten Sie die gleichen Ergebnisse.

Gesamtzahl der übergebenen Argumente prüfen:

Im Gegenteil, wenn Sie die Gesamtzahl der vom Benutzer übergebenen Argumente wissen möchten, können Sie dies auch tun. Dazu müssen Sie in echo nur [email protected] durch $# ersetzen.

Führen Sie erneut den Befehl ./ aus. Sie sehen nun die gesamte Anzahl der an das Skript übergebenen Argumente. In unserem Fall werden 3 Argumente als Wert übergeben.

Zeilenweise Ausgabe von Argumenten erstellen:

Erstellen Sie im Home-Verzeichnis eine neue Datei test.sh. Fügen Sie das Bash-Skript wie gezeigt hinzu.

Führen Sie nun denselben alten Befehl mit anderen Argumenten aus. Zuerst sehen Sie den Fehler: Berechtigung verweigert.

Sie müssen den Befehl chmod ausführen, um dieser Datei sudo-Berechtigungen zu erteilen. Führen Sie danach den ./ Shell-Skriptbefehl erneut aus. Und Sie erhalten die zeilenweise sortierte Ausgabe der Argumente.

Begrenzen Sie die Variable über die Argumentindexnummer:

Wenn Sie die Variable über ihre Indexnummer begrenzen möchten, können Sie dies sehr einfach tun. Fügen Sie geschweifte Klammern nach dem $-Zeichen hinzu und fügen Sie die Argumentindexnummer hinzu, die Sie vor anderen Argumenten anzeigen möchten.

Wenn die von den Benutzern bereitgestellten Argumente kleiner sind als die in der Grenzwertvariable angegebene Indexnummer, erhalten Sie einen leeren Argumentwert. Als Instanz habe ich 4 Argumente bereitgestellt, aber ich habe den anzuzeigenden Argumentwert 05 angegeben. In dieser Situation wird die Variable leer angezeigt, da das fünfte Argument nicht übergeben wurde.

Wenn Sie jedoch die gleiche oder mehr Argumente im Befehl übergeben, wird der Wert wie gezeigt im Ergebnis angezeigt.

Überprüfen bestimmter Wertargumente:

Erstellen Sie eine neue Datei mit dem Namen Check.sh in Ihrem Home-Verzeichnis. Fügen Sie das gleiche Bash-Skript wie in der folgenden Abbildung gezeigt hinzu. In diesem Skript haben wir eine Variable var, um den vom Benutzer übergebenen Argumentwert zu speichern. Dann haben wir eine if-Anweisung, die prüft, ob der Argumentwert übereinstimmt oder nicht. Wenn der Argumentwert mit dem in Klammern angegebenen Wert übereinstimmt, wird die erste echo-Anweisung ausgeführt. Stimmt der Wert nicht überein, wird die zweite echo-Anweisung ausgeführt.

Wenn wir den Shell-Skriptbefehl ausführen, wird ein Fehler ausgegeben. Mit dem Befehl chmod können wir diesen Fehler korrigieren.

Führen Sie danach das Shell-Skript für die jeweilige Datei mit einem Argumentwert aus. In unserem Fall haben wir Aqsa als Argumentwert angegeben, der mit dem in Klammern angezeigten Wert identisch ist. Das Bash-Skript führt also die erste echo-Anweisung wie gezeigt aus.

Auf der anderen Seite, wenn Sie die verschiedenen Argumentwerte im Shell-Skript angeben, wird die andere Echo-Anweisung angezeigt. Hier habe ich Rimsha als Argumentwert hinzugefügt, der sich von dem in der if-Anweisung angegebenen Wert unterscheidet. Das Bash-Skript führt also die zweite echo-Anweisung aus.

Abschluss:

Ich hoffe, dieser Leitfaden hat Ihnen ausreichend geholfen, um einen guten Überblick darüber zu haben, wie Sie Argumente an Standardvariablen übergeben, einen Argumentwert als Array an eine Variable übergeben, die Gesamtzahl der übergebenen Argumente ermitteln, die Argumente zeilenweise ausgeben und das Argument begrenzen Ausgabe mit Indexnummer, Überprüfung eines bestimmten Wertarguments und vieles mehr.