So übergeben Sie die Befehlszeilenargumente in einem Shell -Skript

So übergeben Sie die Befehlszeilenargumente in einem Shell -Skript

Bash -Skripte sind einfache Textdateien, die eine Sammlung von Befehlen enthalten. Bash -Skripte können bei administrativen Aufgaben, Aufgabenautomatisierung und Ausführung mehrerer Befehle helfen. Sie werden verwendet, um wiederkehrende Aufgaben/Aktionen zu automatisieren.

Wir können alle Befehle, die auf dem Terminal in ein Bash -Skript ausgeführt werden, und umgekehrt. Zu den Bash -Skripten gehören imperative Programmierkonzepte wie Schleifen, Bedingungen und Funktionen.

Befehlszeilenargumente sind Parameter, die mit dem Dateinamen des Bash-Skripts zum Zeitpunkt der Ausführung angegeben werden. Die Befehlszeilenargumente ermöglichen es dem Skript, dynamische Aktionen basierend auf der Eingabe auszuführen:

Wie man ein Argument an ein Shell -Skript weitergibt

Um einen Parameter an ein Bash -Skript zu übergeben, schreiben Sie es einfach nach dem Namen des Bash -Skripts im Terminal:

./My-Test-Skript.SH Argument  

So übergeben Sie mehrere Argumente an das Shell -Skript

Sie können auch mehrere Argumente angeben, die zusammen mit dem Namen der Bash -Skriptdatei durch den Raum getrennt sind:

./My-Test-Skript.sh arg_1 arg_2 arg_3… arg_n  

Wir können die vordefinierten Variablen verwenden, um diese Argumente im Bash -Skript zu erinnern. Das erste Argument kann von zurückgerufen werden von $ 1, die zweite nach $ 2, usw. Die vordefinierte Variable "$ 0" bezieht sich auf das Bash -Skript selbst. Die Liste einiger anderer wichtiger vordefinierter Variablen ist unten angegeben:

  • [E -Mail geschützt] : Werte aller Argumente
  • $# : Gesamtzahl der Argumente
  • $$ : Prozess -ID der aktuellen Hülle

Jetzt werden wir eine Bash -Datei namens verwenden Tiere.Sch als Beispiel.

#!/bin/bash echo "Das Tier im ersten Gehäuse ist: $ 1" echo "Das Tier im zweiten Gehäuse ist: $ 2" echo "Das Tier im dritten Gehäuse ist: $ 3" ​​Echo "Die Gesamtzahl der Tiere im Zoo sind: $#"echo" Die Namen aller Tiere sind: $@"
1234567#!/bin/bash echo "Das Tier im ersten Gehäuse ist: $ 1" echo "Das Tier im zweiten Gehäuse ist: $ 2" echo "Das Tier im dritten Gehäuse ist: $ 3" ​​Echo "Die Gesamtzahl der Tiere im Zoo sind: $#"echo" Die Namen aller Tiere sind: [E -Mail geschützt] "

Jetzt werden wir dieses Skript im Terminal ausführen:

Wie man ein Argument mit Raum passt

Wenn ein Argument aus mehreren Wörtern besteht, die durch den Raum getrennt werden, müssen wir es in einzelne Zitate einschließen, um es als einzelnes Argument zu übergeben:

#!/bin/bash echo "Mein Name ist: $ 1"
123#!/bin/bash echo "Mein Name ist: $ 1"

Wie man Argumente mit Sonderzeichen passt

Wir können auch Sonderfiguren als Argumente übergeben. Aber sie müssen vor ihnen mit Rücklaufschung geschrieben werden.

#!/bin/bash echo "Wie viel Geld hast du heute ausgegeben: $ 1"
123#!/bin/bash echo "Wie viel Geld hast du heute ausgegeben: $ 1"

Übergeben von Argumenten mit Flags und Optionen im Shell -Skript

Die Verwendung von Flags und Optionen ist eine weitere häufige Möglichkeit, ein Bash -Skript Eingabe zu geben. Auf eine Option folgt immer ein Wert, während Flaggen keiner Wert folgen.

Erstens werden wir ein neues Bash -Skript erstellen, das zwei verschiedene Argumente (Optionen) i nimmt i.e. -n/-Name für den Namen und -i/-id für eine Identifikationsnummer.

#!/bin/bash args = $ (getopt -a --options n: i: -long "name:, id:" -"$@") eval set -"$ args", während wahr; do case "$ 1" in -n | --Name) name = "$ 2" echo "name: $ name" Shift 2 ;; -i | --id) identification = "$ 2" echo "id: $ identification" Shift 2 ;; --) brechen;; ESAC fertig
1234567891011121314151617181920#!/bin/bash args = $ (getopt -a --options n: i: -long "Name:, id:" -"[E -Mail geschützt]") eval set -"$ args", während wahr; do case "$ 1" in -n | --Name) name = "$ 2" echo "name: $ name" Shift 2 ;; -i | --id) identification = "$ 2" echo "id: $ identification" Shift 2 ;; --) brechen;; Esacdone

In dem oben angegebenen Code haben wir eine Variable erstellt, die alle kurzen und langen Namen unserer Optionen speichert. In der zweiten Zeile haben wir die bewertet Args Variable. Dann haben wir eine Weile Schleife verwendet, um jeder Option einen Codeblock zuzuweisen.

Im obigen Code wird die Verschiebung verwendet, um die Werte der Variablen zu überspringen. Die folgende Ziffer der Verschiebung definiert, wie viele Variablen übersprungen werden.

Ähnlich

Jetzt werden wir eine hinzufügen -v Flag, das ein ausführliches Menü ausdruckt:

#!/bin/bash args = $ (getopt -a --options n: i: v -long "Name:, id:, verbose" -"$@") eval set -"$ args", während true; do case "$ 1" in -n | --Name) name = "$ 2" echo "name: $ name" Shift 2 ;; -i | --id) identification = "$ 2" echo "id: $ identification" Shift 2 ;; -V | --verbose) echo "Bitte verwenden Sie -n/-Name oder -I/-ID, um den Namen oder die Identifikationsnummer zu übergeben." Break ;; --) brechen;; ESAC fertig
1234567891011121314151617181920212223#!/bin/bash args = $ (getopt -a --options n: i: v -long "Name:, id:, wörtlich" -"[E -Mail geschützt]") eval set -"$ args", während true true ; do case "$ 1" in -n | --Name) name = "$ 2" echo "name: $ name" Shift 2 ;; -i | --id) identification = "$ 2" echo "id: $ identification" Shift 2 ;; -V | --verbose) echo "Bitte verwenden Sie -n/-Name oder -I/-ID, um den Namen oder die Identifikationsnummer zu übergeben." Break ;; --) brechen;; Esacdone

Nach Flaggen folgen kein Dickdarm, wenn sie in einem Bash -Skript definiert werden.G. Die -N Die Option nimmt einen Namen mit, wie z Rahul.

Abschluss

Ein menschlicher Bediener, der manuell wiederkehrende Aufgaben ausführt, ist sehr ineffizient. So sollten solche Aufgaben automatisiert werden. Skripte können uns dabei helfen, das zu tun.

In dieser Beschreibung haben wir gelernt, wie man Argumente über die Befehlszeile an ein Bash-Skript übergibt. Befehlszeilenargumente helfen uns, dynamische Skripte zu schreiben, die je nach Eingabe unterschiedliche Funktionen ausführen.

Darüber hinaus haben wir verschiedene Arten von Argumenten diskutiert. Wir haben uns auch ein wenig auf vordefinierte Variablen berührt.