$1, $@ ·
Special Variables ·
shift ·
getopts ·
Flags
Mit diesen Techniken können Sie flexible und benutzerfreundliche Skripte schreiben, die Parameter und Optionen wie professionelle Kommandozeilen-Tools verarbeiten.
Positional Parameters ($1, $2, $3) sind die Argumente, die beim Aufruf eines Skripts übergeben werden. $0 ist der Skriptname selbst.
| Variable | Beschreibung |
|---|---|
| $0 | Skriptname (oder Pfad zum Skript) |
| $1, $2, ... | Erstes, zweites ... Argument |
| ${10}, ${11} | Ab dem 10. Argument muss geklammert werden |
"${1:-default}" für Standardwerte, falls ein Argument fehlt.
Special Variables liefern wichtige Informationen über das Skript, die übergebenen Argumente und den letzten Befehlsstatus.
| Variable | Beschreibung |
|---|---|
| $# | Anzahl der übergebenen Argumente |
| $@ | Alle Argumente als einzelne Strings (mit Anführungszeichen) |
| $* | Alle Argumente als ein String (ohne Anführungszeichen) |
| $? | Exit-Status des letzten Befehls (0 = Erfolg) |
| $$ | PID (Prozess-ID) des aktuellen Skripts |
| $! | PID des letzten Hintergrund-Prozesses |
"$@" in Schleifen, um Argumente mit Leerzeichen korrekt zu verarbeiten. $* ist dafür weniger geeignet.
shift verschiebt die Positionsparameter nach links: $2 wird zu $1, $3 zu $2 usw. Nützlich, um Argumente der Reihe nach zu verarbeiten.
| Kommando | Beschreibung |
|---|---|
| shift | Verschiebt um 1 Position (Standard) |
| shift 2 | Verschiebt um 2 Positionen |
| shift n | Verschiebt um n Positionen |
shift wird oft in Kombination mit while und case verwendet, um Optionen wie -f oder --help zu parsen.
getopts ist der eingebaute Bash-Parser für Kommandozeilenoptionen wie -f oder -a wert. Es unterstützt sowohl einfache Flags als auch Optionen mit Argumenten.
| Element | Beschreibung |
|---|---|
| optstring | Zeichenkette mit Optionen. Doppelpunkt = Argument erforderlich |
| varname | Variable für die gefundene Option |
| OPTARG | Argument der aktuellen Option (bei :) |
| OPTIND | Position des nächsten Arguments (für shift) |
getopts ist standardmäßig in Bash eingebaut und viel einfacher als manuelles Parsen. Es unterstützt keine langen Optionen wie --help – dafür gibt es getopt (extern).
Flags sind boolesche Optionen (z.B. -v für "verbose"). Defaults setzen Standardwerte für Variablen, die nicht gesetzt wurden.
| Syntax | Beschreibung |
|---|---|
| ${var:-default} | Verwendet default, wenn var nicht gesetzt oder leer ist |
| ${var:=default} | Setzt var auf default, wenn nicht gesetzt (und verwendet es) |
| ${var:?Fehler} | Gibt Fehler aus, wenn var nicht gesetzt ist |
| ${#var} | Länge des Strings var |
getopts mit Defaults, um flexible Skripte zu erstellen, die sowohl mit als auch ohne Optionen funktionieren.
$1 $2
$# $@
shift
getopts
${var:-def}