Umgang mit Befehlszeilenargumenten in einem Bash-Skript

How Handle Command Line Arguments Bash Script



In vielen Fällen erfordern Bash-Skripte Argumentwerte, um Eingabeoptionen für das Skript bereitzustellen. Sie können Befehlszeilenargumente in einem Bash-Skript auf zwei Arten behandeln. Eine ist durch die Verwendung Argumentvariablen und ein anderer ist durch die Verwendung getopts Funktion. In diesem Tutorial wird gezeigt, wie Sie mit Befehlszeilenargumenten umgehen können.

Argumentvariablen verwenden:

Die Argumentvariable beginnt bei $0. Der Name der Hauptskriptdatei wird in $0 gespeichert, das Argumentwerte von Befehlszeilenargumenten empfängt. Wenn zwei Argumente in der Befehlszeile übergeben werden, werden die Argumentwerte nacheinander in den Variablen $1 und $2 empfangen.







Beispiel -1: Senden von drei numerischen Werten als Argumente

Erstellen Sie eine Bash-Datei und fügen Sie den folgenden Code hinzu. Das Skript erhält drei Argumentwerte und wird in $1, $2 und $3 gespeichert. Es wird die Gesamtzahl der Argumente zählen, Argumentwerte mit Schleife und ohne Schleife ausgeben. Geben Sie zuletzt die Summe aller Argumentwerte aus.



#!/bin/bash

# Zählen der Gesamtzahl der Argumente
rauswerfen 'Gesamtzahl der Argumente: $#'

# Argumentwerte einzeln lesen
rauswerfen 'Erster Argumentwert: $1'
rauswerfen 'Zweiter Argumentwert: 2 $'
rauswerfen 'Dritter Argumentwert: $3'

# Argumentwerte mit Schleife lesen
zumargvalin ' [E-Mail geschützt] '
tun
rauswerfen -n '$argval'
getan

# Argumentwerte hinzufügen
Summe= $(($ 1+$ 2+$ 3))

# Ergebnis drucken
rauswerfen -Und ' Ergebnis der Summe =$summe'

Führen Sie die Bash-Datei mit drei numerischen Argumentwerten aus.



$bashcmdline1.shfünfzig 35 fünfzehn





Beispiel -2: Dateiname als Argument nehmen

Erstellen Sie eine Bash-Datei und fügen Sie den folgenden Code hinzu, um die Gesamtzahl der Zeichen einer beliebigen Datei zu zählen. Hier wird der Dateiname als Kommandozeilenargument übergeben.

#!/bin/bash
Dateiname=$ 1
Gesamtchar=``Toilette -C $Dateiname``
rauswerfen 'Gesamtzahl der Zeichen sind$ Gesamtchar'

Führen Sie das Bash-Skript mit dem Dateinamen als einzelnen Argumentwert aus und führen Sie einen anderen Befehl aus, um die Gesamtzahl der Zeichen dieser Datei zu überprüfen. Hier wird die Datei employee.txt als Argumentwert verwendet. Die Gesamtzahl der Zeichen der Datei Employee.txt beträgt 204.



$bashcmdline2.sh Mitarbeiter.txt
$Toilette -CMitarbeiter.txt

Verwenden der getopts-Funktion:

Wenn Sie Daten in einer Datenbank oder einer beliebigen Datei speichern oder einen Bericht in einem bestimmten Format basierend auf Befehlszeilenargumentwerten erstellen möchten, dann getopts Funktion ist die beste Option, um die Aufgabe zu erledigen. Es ist eine eingebaute Linux-Funktion. Sie können diese Funktion also problemlos in Ihrem Skript verwenden, um formatierte Daten von der Befehlszeile zu lesen.

Beispiel -1: Lesen von Argumenten durch die Funktion getopts

Erstellen Sie eine Bash-Datei und fügen Sie das folgende Skript hinzu, um die Verwendung von . zu verstehen getopts Funktion. Die Funktion 'getopts' wird mit der while-Schleife verwendet, um Befehlszeilen-Argumentoptionen und -Argumentwerte zu lesen. Hier werden 4 Optionen verwendet, die sind „ich“, „n“, „m“ und 'Und' . case-Anweisung wird verwendet, um die jeweilige Option abzugleichen und den Argumentwert in einer Variablen zu speichern. Geben Sie schließlich die Werte der Variablen aus.

#!/bin/bash
während getopts ':in mir:'verärgert;tun
Fall $ arg in
ich) ICH WÜRDE=$OPTARG;;
n) Name=$OPTARG;;
m) Herstellungsdatum=$OPTARG;;
Und) Ablaufdatum=$OPTARG;;
esac
getan
rauswerfen -Und ' $ID $Name $Manufacturing_date $Expire_date '

Führen Sie die Datei mit den folgenden Optionen und Argumentwerten aus. Hier ist p100 der Wert der Option -i, 'Hot Cake' ist der Wert der Option -n, '01-01-2018′ ist der Wert der Option -m und '06-01-2018′ ist der Wert von - e-Option.

$bashcmdline3.sh-ichp001-n 'Heißer Kuchen' -m '01-01-2018 ' -Und '06-01-2018 '

Wenn Sie einfache Werte in einem Skript senden müssen, ist es besser, Argumentvariablen zu verwenden. Wenn Sie jedoch Daten formatiert senden möchten, ist es besser, die Funktion getopts zum Abrufen von Argumentwerten zu verwenden. Für weitere Informationen ansehen das Video !