Linux Terminal: Bash-Scripting – Funktionen & Modularisierung

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

KonzeptBeispiel
Funktion definierenfunktion_name() { Befehle }
Parameter übergeben$1, $2, …
Rückgabewert prüfenif funktion; then ... fi
Lokale Variablenlocal varname=wert
Module ladensource datei.sh

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert