Bash Getopts

Bash Getopts
Manchmal müssen wir Befehlszeilenargumente und -optionen in Bash -Skripten lesen. Befehlszeilenargumente können leicht durch Argumentvariablen gelesen werden. Für das Lesen beider Befehlszeilenargumente und -optionen verwendete Bash einen integrierten Befehl 'getopts'. Dieser Befehl kann verwendet werden, um kurze Optionen wie '-a' oder '-1' und lange Optionen wie '-package-name' analysieren zu können. Wie 'GetOpts' -Befehl verwendet werden kann, um Befehlszeilenargumente und Optionen zu analysieren, werden in diesem Tutorial unter Verwendung verschiedener Beispiele angezeigt.

Syntax:

GetOpts Optstring Name [Args]

Optionen:

Einige meist gebrauchte GetOpts -Optionen werden hier erwähnt.

Schild Beschreibung
-o oder -optionen Identifizieren Sie die Option Ein-Charakter.
-L oder -Longoptionen Identifizieren Sie Multi-Charakter-Optionen.
-n oder -name Melden Sie Fehler aus dem Befehl getopts
-Q oder -quiet Fehlerberichterstattung deaktivieren
-T oder -test Testen Sie GetOpts -Version
-a oder -Alternativ Ermöglichen Sie eine lange Option mit Single '-' '

Beispiel 1: Verwenden einer einzigen Möglichkeit

Dieses Beispiel zeigt die sehr einfache Verwendung von GetOpts -Befehl. Erstellen Sie eine Bash -Datei namens 'getopts1.SH 'mit dem folgenden Code, um den Code zu testen. Hier, während die Loop für die Option des GetOpts -Befehls fortgesetzt wird. Die Fallerklärung überprüft die Option. Wenn die Option 'C' ist, druckt das Skript "Meine Lieblingsfarbe ist blau". Wenn die Option 'F' ist, druckt das Skript 'mein Lieblings Essen ist Eis.'. Wenn die Option '-m' ist, druckt das Drehbuch "Mein Lieblingsfilm ist titanisch". Für einen anderen Optionswert "müssen Sie verwenden: [-c] oder [-f] oder [-m]" drucken.

#!/Bin/Bash
# Lesen Sie die Option und speichern Sie die Option Variable, $
während GetOpts "CFM" -Option; Tun
Fall $ Option in
c) #für Option c
echo "Meine Lieblingsfarbe ist blau"
;;
f) #für Option f
Echo "Mein Lieblings Essen ist Eis."
;;
m) #für Option m
Echo "Mein Lieblingsfilm ist Titanic"
;;
\? ) #Für ungültige Option
echo "Sie müssen verwenden: [-c] oder [-f] oder [-m]"
;;
ESAC
Erledigt

Führen Sie das Skript mit vier Optionen aus, '-c', '-f', '-m' und '-k', '-c', '-f', '-m' und '-k'.

$ bash getopts1.Sh -C
$ bash getopts1.Sh -f
$ bash getopts1.Sh -m
$ bash getopts1.Sh -K

Ausgang:

Beispiel 2: Verwenden Sie die Option mit einem einzigen Argument

Dieses Beispiel zeigt die Verwendung des Befehls getopts mit einem Argument. Erstellen Sie eine Bash -Datei namens 'getopts2.SH 'mit dem folgenden Code, um den Code zu testen. Hier ':' wird mit 'P' verwendet, um zu definieren, dass der Befehl mit der Option Argumentation einnimmt. Das Skript wird den Argumentwert mit einer anderen Zeichenfolge ausdrucken, wenn das Argument mit '-p' zur Laufzeit bereitgestellt wird. Wenn eine Option eher anstelle "-p" bereitgestellt wird, wird eine Fehlermeldung mit Optionswert angezeigt. Wenn die Option '-p' ohne Argument angibt, wird eine andere Fehlermeldung gedruckt.

#!/Bin/Bash
Während Getopts "P:" opt; Tun
Fall $ opt in
p) #print des Argumentwerts
echo "Ich mag $ optarg Programmierung"
;;
\? )
#print Option Fehler
echo "Ungültige Option: $ optarg" 1> & 2
;;
:)
#Druckargumentfehler
Echo "Ungültige Option: $ optarg erfordert ein Argument" 1> & 2
;;
ESAC
Erledigt

Führen Sie das Skript mit der Option -P und dem Argumentwert 'Bash' aus, mit nur Option -P und mit der Option -t -t.

$ bash getopts2.Sh -P Bash
$ bash getopts2.sh -p
$ bash getopts2.Sh -T

Ausgang:

Beispiel-3: Verwenden der Option mit mehreren Argumenten

Dieses Beispiel zeigt die Verwendung des Befehls getopts mit mehreren Argumenten. Erstellen Sie ein Bash -Skript namens GrtoPTS3.SH mit dem folgenden Code, um das Skript zu testen. Gemäß dem Skript werden von COMMA getrennte Argumentwerte aus der Befehlszeile bereitgestellt.

Hier werden die Option "-f" und die IFS-Variable verwendet, um die Argumente zu teilen und in einem Array, $ numarr. Wenn die von den Kommas getrennten Argumente vorlegen werden, druckt sie die Gesamtzahl der Argumente aus. Zwei Optionen unterstützen den Befehl. Die Summe der Argumentwerte wird berechnet und gedruckt, wenn '-a' die Option mit den Argumenten liefert. Die Multiplikation der Argumentwerte wird berechnet und gedruckt, wenn die Option "-m" die Argumente liefert.

#!/Bin/Bash
Während Getopts "A: M:" Opt; Tun
set -f; Ifs = ','
numarr = ($ 2)
echo "Gesamtzahl der Argumente = $ #numarr [@]"
Fall $ $ entscheiden
a) Ergebnis = 0
für i in "$ numarr [@]"; Tun
((Ergebnis = $ result+$ i)))
Erledigt
echo "Die Summe aller Argumente = $ Ergebnis" ;;
m) Ergebnis = 1
für i in "$ numarr [@]"; Tun
((Ergebnis = $ Ergebnis*$ i))
Erledigt
echo "Die Multiplikation aller Argumente = $ Ergebnis" ;;
*) Echo "Ungültige Option oder Argument"
Ausgang 1
ESAC
Erledigt

Führen Sie die Skripte mit der Option "-a" und drei Argumente mit "-m" -Option und drei Argumenten und der Option "-t" ohne Argument aus.

$ bash getopts3.Sh -A 3,2,5
$ bash getopts3.Sh -m 3,2,5
$ bash getopts3.Sh -T

Ausgang:

Beispiel-4: Verwenden Sie mehrere Optionen und Argumente

Dieses Beispiel zeigt die Verwendung des Befehls getopts mit mehreren Optionen und mehreren Argumenten. Erstellen Sie eine Bash -Datei namens 'getopts4.SH mit dem folgenden Code, um das Beispiel zu testen. Hier funktionieren zwei Optionen mit zwei Argumenten getrennt. Wenn keine der Optionen angezeigt wird, wird eine Fehlermeldung gedruckt.

#!/Bin/Bash
Während Getopts "n: m:" opt; Tun
Fall $ $ entscheiden
N)
#Lesen Sie das erste Argument
echo "Der Name des Schülers ist $ optarg"> & 2
;;
M)
#Lesen Sie das zweite Argument
Echo "und die Marke ist $ optarg"> & 2
;;
*)
#Printing -Fehlermeldung
echo "Ungültige Option oder Argument $ optarg"
;;
ESAC
Erledigt

Wenn das Skript mit der Option '-n' mit 'ella' und '-m' mit 85 ausgeführt wird, werden zwei Fallanweisungen trugen und drucken zwei Ausgänge aus. Wenn das Skript nur durch die Option '-n' mit 'ella' ausgeführt wird, wird nur eine Fallanweisung wahr und druckt eine Ausgabe aus. Wenn das Skript von '-p' Option ausgeführt wird, wird eine Fehlermeldung gedruckt.

$ bash getopts4.sh -n ella -m 85
$ bash getopts4.sh -n ella
$ bash getopts4.sh -p ella

Abschluss

Grundlegende Verwendungen des Befehls 'getopts' werden in diesem Tutorial unter Verwendung der obigen Beispiele angezeigt. Hoffe, nach dem Üben dieses Tutorials können Sie Befehlszeilenoptionen und Argumente in Ihrem Bash -Skript verwenden.