Funktionen ·
Parameter ·
Arrays ·
Array-Schleifen ·
Array-Operationen
Funktionen machen Skripte modular und wiederverwendbar. Arrays ermöglichen die Speicherung und Verarbeitung von Listen und Sammlungen von Daten.
Funktionen fassen Codeblöcke zusammen, die mehrfach aufgerufen werden können. Sie verbessern die Lesbarkeit, Wartbarkeit und Wiederverwendbarkeit von Skripten.
| Form | Beschreibung |
|---|---|
| function name { ... } | Klassische Deklaration (ohne Klammern) |
| name() { ... } | Kurze Deklaration (ohne function) |
| function name() { ... } | Kombinierte Deklaration (beides) |
name() { ... } wird am häufigsten verwendet und ist platzsparender.
Parameter ermöglichen die Übergabe von Werten an Funktionen. Innerhalb der Funktion werden sie über $1, $2, ... angesprochen.
| Variable | Beschreibung |
|---|---|
| $1, $2, ... | Einzelne Parameter in der Reihenfolge |
| $@ | Alle Parameter als einzelne Argumente (in Anführungszeichen) |
| $* | Alle Parameter als ein einzelnes Argument |
| $# | Anzahl der übergebenen Parameter |
| $0 | Name der Funktion oder des Skripts |
"$@" in Anführungszeichen, um Parameter mit Leerzeichen korrekt zu übergeben.
Arrays speichern eine Liste von Werten. Der Zugriff erfolgt über den Index (beginnt bei 0).
| Operation | Beschreibung |
|---|---|
| array=(a b c) | Array deklarieren |
| ${array[0]} | Erstes Element (Index 0) |
| ${array[@]} | Alle Elemente |
| ${#array[@]} | Länge (Anzahl Elemente) |
| ${!array[@]} | Alle Indizes |
| array+=(neuer) | Element anhängen |
| unset array[1] | Element löschen |
${array[@]} in Anführungszeichen, um jedes Element als separates Argument zu behandeln.
Array-Schleifen durchlaufen alle Elemente eines Arrays und führen für jedes Element eine Aktion aus.
| Variante | Beschreibung |
|---|---|
| for i in "${array[@]}" | Über Werte iterieren (empfohlen) |
| for i in "${array[*]}" | Alle Werte als ein String (mit Leerzeichen) |
| for i in ${!array[@]} | Über Indizes iterieren |
| for i in $(seq 0 $((${#array[@]}-1))) | Über Index-Bereich iterieren (traditionell) |
"${array[@]}" ist die sicherste Methode, da sie jedes Element korrekt behandelt (auch mit Leerzeichen).
Array-Operationen ermöglichen das Extrahieren von Teilmengen, Suchen nach Werten und das Filtern von Array-Inhalten.
| Operation | Beschreibung |
|---|---|
| ${array[@]:start:len} | Slicing – Teil des Arrays ab Index start mit len Elementen |
| ${array[@]/muster/ersatz} | Ersetzt Muster in allen Elementen |
| ${array[@]#prefix} | Entfernt Prefix von jedem Element |
| ${array[@]%suffix} | Entfernt Suffix von jedem Element |
| grep -q "wert" | Prüft, ob Wert im Array vorhanden ist (mit grep) |
grep oder awk.
function()
$1, $@
array=(...)
for in
[:]