Im letzten Beitrag haben wir Bedingungen und Schleifen kennengelernt. Nun gehen wir einen Schritt weiter und sehen uns an, wie wir mit Funktionen und Modularisierung Bash-Skripte übersichtlicher, wiederverwendbarer und besser wartbar gestalten können.
1. Warum Funktionen verwenden?
Funktionen helfen dabei:
- Code zu strukturieren
- Wiederholungen zu vermeiden
- Komplexe Skripte in logische Einheiten zu unterteilen
Statt denselben Code mehrfach zu schreiben, definiert man ihn einmal als Funktion und ruft ihn dann bei Bedarf auf.
2. Funktionen in Bash
Syntax
funktion_name() {
Befehle
}
oder
function funktion_name {
Befehle
}
Beide Varianten sind gültig.
3. Parameter an Funktionen übergeben
begrüßung() {
echo "Hallo $1"
}
begrüßung "Max"
→ $1
ist das erste Argument, $2
das zweite usw.
4. Rückgabewerte
- exit codes werden mit
return
zurückgegeben:pruefe_datei() { if [ -f "$1" ]; then return 0 # Erfolg else return 1 # Fehler fi } pruefe_datei /etc/passwd && echo "Datei existiert"
- Ausgaben können über
echo
erfolgen und mit Command Substitution ($(...)
) ausgewertet werden:addiere() { echo $(( $1 + $2 )) } summe=$(addiere 3 5) echo "Summe: $summe"
5. Variablen in Funktionen
- Globale Variablen: überall im Skript verfügbar
- Lokale Variablen: nur innerhalb einer Funktion mit
local
beispiel() { local name="Test" echo "Name in Funktion: $name" }
6. Modularisierung mit separaten Skripten
Größere Skripte können in Module zerlegt werden, die dann bei Bedarf eingebunden werden:
source funktionen.sh
Oder mit Punkt-Syntax:
. funktionen.sh
So können mehrere Skripte auf denselben Funktionscode zugreifen.
7. Praxisbeispiele
7.1 Backup-Funktion
#!/bin/bash
backup() {
ziel="/home/user/backup"
mkdir -p "$ziel"
cp -r /home/user/Dokumente "$ziel"
echo "Backup abgeschlossen!"
}
backup
7.2 Menü mit Funktionen
#!/bin/bash
start_dienst() {
echo "Dienst startet..."
}
stop_dienst() {
echo "Dienst stoppt..."
}
echo "Option wählen: (1) Start, (2) Stop"
read auswahl
case $auswahl in
1) start_dienst ;;
2) stop_dienst ;;
*) echo "Ungültige Eingabe" ;;
esac
7.3 Funktionen aus externer Datei laden
funktionen.sh
begrüßung() {
echo "Hallo $1"
}
hauptskript.sh
#!/bin/bash
source funktionen.sh
begrüßung "Anna"
8. Zusammenfassung
Konzept | Beispiel |
---|---|
Funktion definieren | funktion_name() { Befehle } |
Parameter übergeben | $1 , $2 , … |
Rückgabewert prüfen | if funktion; then ... fi |
Lokale Variablen | local varname=wert |
Module laden | source datei.sh |
Schreibe einen Kommentar