Skriptargumente und Optionen ($@, $#, getopts)
Lernen Sie, Argumente an Ihre Skripte zu übergeben und Befehlszeilenoptionen mithilfe spezieller Variablen und „getopts“ zu verarbeiten.
Skriptargumente und Optionen ($@, $#, getopts) ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Skriptargumente: Warum verwendet man sie?
Haben Sie schon einmal einen Befehl wie ls -l oder cp file1 file2 verwendet? -l, file1 und file2 sind allesamt Argumente! Sie teilen dem Befehl mit, was er tun oder worauf er angewendet werden soll.
In Bash-Skripten sorgen Argumente für Flexibilität. Statt Werte fest zu codieren, kann Ihr Skript Eingaben direkt über die Befehlszeile akzeptieren, wenn es ausgeführt wird.
Positionsparameter abrufen
Wenn Sie ein Skript mit Argumenten ausführen, weist Bash diese automatisch speziellen Variablen zu, den sogenannten Positionsparametern.
- Das erste Argument ist
$1. - Das zweite Argument ist
$2. - Und so weiter bis zu
$9.
Für Argumente ab dem zehnten verwenden Sie geschweifte Klammern wie bei ${10}, ${11} usw. Diese Variablen enthalten die an Ihr Skript übergebenen Werte.
Demo: Positionsparameter
Sehen wir uns an, wie Sie diese Argumente in einem Skript abrufen. Speichern Sie es als greet.sh und führen Sie es mit ./greet.sh Alice Bob aus.
#!/bin/bash
echo "Hello, $1!"
echo "Welcome, $2."
echo "The third argument (if any) is: $3"`$0` und `$#`: Skriptinformationen
Bash stellt einige weitere spezielle Variablen bereit, die Informationen über das Skript selbst und seine Argumente liefern:
$0: Enthält den Namen des ausgeführten Skripts. Das ist nützlich für Fehlermeldungen oder Protokolle.$#: Diese Variable enthält die Gesamtzahl der an das Skript übergebenen Positionsparameter.
Damit werden Ihre Skripte robuster und benutzerfreundlicher.
Demo: `$0` und `$#`
Führen Sie dieses Skript mit unterschiedlich vielen Argumenten aus, zum Beispiel mit ./info.sh one two three oder einfach mit ./info.sh.
#!/bin/bash
echo "Script name: $0"
echo "Number of arguments received: $#"`$@` im Vergleich zu `$*`: Alle Argumente
Manchmal müssen Sie auf alle Argumente gleichzeitig zugreifen. Bash bietet dafür zwei Möglichkeiten:
$@: Wird zu einzelnen Argumenten erweitert. In doppelten Anführungszeichen ("$@") bleibt jedes Argument ein eigenes Wort, auch wenn es Leerzeichen enthält. Für Schleifen wird diese Variante normalerweise bevorzugt.$*: Wird zu einer einzigen Zeichenkette aus allen Argumenten erweitert. In doppelten Anführungszeichen ("$*") werden alle Argumente zu einem einzigen Wort zusammengefasst und durch das erste Zeichen vonIFS(Internal Field Separator, normalerweise ein Leerzeichen) getrennt.
Verwenden Sie beim Durchlaufen von Argumenten immer "$@", damit Leerzeichen erhalten bleiben!
Demo: Durchlaufen mit `"$@"`
Dieses Skript zeigt, wie "$@" Argumente mit Leerzeichen korrekt verarbeitet. Führen Sie es beispielsweise so aus: ./loop_args.sh hello "world wide" web
#!/bin/bash
echo "Processing arguments with \"$@\":"
for arg in "$@"; do
echo " Argument: [$arg]"
done
echo "\nProcessing arguments with \"$*\":"
for arg in "$*"; do
echo " Argument: [$arg]"
doneOptionen: Mehr als Positionsargumente
Positionsargumente eignen sich hervorragend für einfache Fälle. Was aber, wenn Ihr Skript optionale Flags oder benannte Parameter benötigt, etwa -v für ausführliche Ausgabe oder -f filename?
Hier kommen Befehlszeilenoptionen ins Spiel. Sie machen Skripte flexibler und benutzerfreundlicher, da Benutzer Einstellungen in beliebiger Reihenfolge angeben können.
Bash stellt speziell zum Parsen solcher Optionen den Befehl getopts bereit.
`getopts`-Syntax: `optstring`
Die grundlegende Syntax für getopts lautet: getopts optstring variable.
optstring: Eine Zeichenkette mit gültigen Optionszeichen. Wenn eine Option ein Argument erfordert (etwa-f filename), setzen Sie hinter das Zeichen einen Doppelpunkt (zum Beispielf:).variable: Ein Variablenname, in demgetoptsdas aktuell verarbeitete Optionszeichen speichert (zum Beispielopt).
getopts setzt außerdem OPTARG für Optionsargumente und OPTIND für den Index des nächsten Arguments.
Demo: Einfaches `getopts`
Dieses Skript verarbeitet die Optionen -v (ausführliche Ausgabe) und -f (Datei). Führen Sie es beispielsweise so aus: ./options.sh -v -f mydata.txt -x oder ./options.sh -vf mydata.txt
#!/bin/bash
while getopts "vf:" opt; do
case $opt in
v)
echo "Verbose mode enabled."
;;
f)
echo "File specified: $OPTARG"
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
doneSchnelltest: Argumentvariablen
Betrachten Sie das folgende Skript und seine Ausführung:
#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
echo "Arg: $arg"
doneWenn Sie es so ausführen: ./myscript.sh "Hello World" 123
Wie lautet die Ausgabe?
Zusammenfassung: Argumente und Optionen
Sehr gut! Sie haben gelernt, wie Sie Ihre Bash-Skripte deutlich vielseitiger machen:
- Positionsargumente: Verwenden Sie
$1,$2usw., um direkt auf Argumente zuzugreifen. - Spezielle Variablen:
$0für den Skriptnamen,$#für die Anzahl der Argumente und"$@", um sicher über alle Argumente zu iterieren. - Befehlszeilenoptionen: Verwenden Sie
getopts, um benannte Optionen (wie-v) und ihre Argumente (-f filename) zu parsen und Ihre Skripte dadurch robuster und benutzerfreundlicher zu machen.
Üben Sie deren Verwendung in Ihren eigenen Skripten, um leistungsfähige und flexible Befehlszeilenwerkzeuge zu entwickeln!
Häufig gestellte Fragen
Ist die Lektion „Skriptargumente und Optionen ($@, $#, getopts)“ kostenlos?
Ja — der vollständige Text von „Skriptargumente und Optionen ($@, $#, getopts)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Skriptargumente und Optionen ($@, $#, getopts)“?
Lernen Sie, Argumente an Ihre Skripte zu übergeben und Befehlszeilenoptionen mithilfe spezieller Variablen und „getopts“ zu verarbeiten. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um DevOps Bootcamp zu starten?
Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Skriptargumente und Optionen ($@, $#, getopts)“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?
Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Schleifenkonstrukte (for, while)
- Funktionen in Bash-Skripten
- Skriptargumente und Optionen ($@, $#, getopts)
- Die case-Anweisung und Pattern Matching