Linux Terminal: Bash-Scripting – Bedingungen & Schleifen

Im vorherigen Beitrag haben wir die Grundlagen des Bash-Scriptings kennengelernt. Nun gehen wir einen Schritt weiter und nutzen Bedingungen für Entscheidungen sowie Schleifen, um Befehle automatisch wiederholt auszuführen.

Diese Konzepte sind essenziell, um komplexere Automatisierungen unter Linux umzusetzen.


1. Bedingungen mit if

Der klassische Weg, Entscheidungen in Bash-Skripten umzusetzen, ist die if-Abfrage.

Syntax

if [ Bedingung ]; then
    Befehl(e)
fi

Beispiel: Verzeichnis prüfen

#!/bin/bash
if [ -d "/home/user/Dokumente" ]; then
    echo "Verzeichnis existiert."
else
    echo "Verzeichnis nicht gefunden."
fi

2. Vergleichsoperatoren

OperatorBedeutungBeispiel
-eqGleich[ "$a" -eq "$b" ]
-neUngleich[ "$a" -ne "$b" ]
-ltKleiner als[ "$a" -lt "$b" ]
-gtGrößer als[ "$a" -gt "$b" ]
-leKleiner oder gleich[ "$a" -le "$b" ]
-geGrößer oder gleich[ "$a" -ge "$b" ]
= oder ==Zeichenketten gleich[ "$str1" = "$str2" ]
!=Zeichenketten ungleich[ "$str1" != "$str2" ]

3. Logische Operatoren

  • UND: [ "$a" -gt 5 ] && [ "$b" -lt 10 ]
  • ODER: [ "$a" -gt 5 ] || [ "$b" -lt 10 ]
  • NICHT: [ ! -f datei.txt ]

4. Schleifen – wiederholte Abläufe

4.1 for-Schleife

for i in 1 2 3 4 5; do
    echo "Durchlauf $i"
done

Mit Zahlenbereich:

for i in {1..5}; do
    echo "Zahl: $i"
done

Über Dateien iterieren:

for file in *.txt; do
    echo "Datei: $file"
done

4.2 while-Schleife

i=1
while [ $i -le 5 ]; do
    echo "Zahl: $i"
    i=$((i+1))
done

4.3 until-Schleife

Läuft, bis eine Bedingung wahr wird:

i=1
until [ $i -gt 5 ]; do
    echo "Zahl: $i"
    i=$((i+1))
done

5. case – Mehrfachverzweigungen

Der Befehl case ist ideal für Menüs oder mehrere Entscheidungswege:

echo "Bitte eine Zahl eingeben:"
read zahl
case $zahl in
    1) echo "Eins";;
    2) echo "Zwei";;
    3) echo "Drei";;
    *) echo "Unbekannte Zahl";;
esac

6. Praxisbeispiele

  1. Backup nur erstellen, wenn Verzeichnis existiert
#!/bin/bash
ziel="/home/user/backup"
if [ -d "$ziel" ]; then
    tar -czf backup.tar.gz "$ziel"
    echo "Backup erstellt."
else
    echo "Backup-Verzeichnis nicht gefunden!"
fi
  1. Automatisierte Dateiverarbeitung
#!/bin/bash
for file in *.log; do
    echo "Bearbeite $file"
    gzip "$file"
done
  1. Menü mit case
#!/bin/bash
echo "Option wählen: (1) Start (2) Stop"
read auswahl
case $auswahl in
    1) echo "Dienst startet";;
    2) echo "Dienst stoppt";;
    *) echo "Ungültige Eingabe";;
esac

7. Zusammenfassung

KonstruktZweckBeispiel
if ... elseEntscheidungen treffen[ -f datei.txt ]
forWiederholte Abläufefor i in {1..5}
whileSchleifen mit Bedingungwhile [ $i -le 5 ]
untilBis Bedingung erfüllt istuntil [ $i -gt 5 ]
caseMehrfachentscheidungencase $var in ...)

Kommentare

Schreibe einen Kommentar

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