Schleifen (for, while)
Bash-Scripting
Wiederholungen automatisieren
Mit Schleifen führst du Befehle mehrfach aus – etwa für jede Datei in einem Ordner oder für jede Zahl in einem Bereich. Bash kennt drei Schleifenarten: for, while und until.
for – über eine Liste laufen
#!/bin/bash
for name in anna bob carla; do
echo "Hallo, $name"
done
Sehr häufig läuft for über Dateien oder Zahlen:
for datei in *.txt; do
echo "Verarbeite: $datei"
done
for i in {1..5}; do
echo "Durchlauf $i"
done
Die C-ähnliche Form ist ebenfalls möglich:
for ((i=0; i<5; i++)); do
echo "i = $i"
done
seq – Zahlenfolgen erzeugen
$ seq 1 5 # 1 2 3 4 5 $ seq 0 2 10 # 0 2 4 6 8 10 (Schrittweite 2) for i in $(seq 1 3); do echo "$i"; done
Die Bash-Klammern {1..5} sind oft praktischer und schneller als seq, aber seq ist flexibler, wenn die Grenzen in Variablen stehen.
while – solange wahr
while wiederholt, solange die Bedingung erfüllt ist:
#!/bin/bash
i=1
while [ "$i" -le 3 ]; do
echo "Zähler: $i"
i=$((i + 1))
done
Sehr nützlich zum zeilenweisen Lesen einer Datei:
while read -r zeile; do
echo "Zeile: $zeile"
done < datei.txt
until – solange falsch
until ist das Gegenstück: Es läuft, bis die Bedingung wahr wird:
i=1
until [ "$i" -gt 3 ]; do
echo "$i"
i=$((i + 1))
done
break und continue
for i in {1..10}; do
if [ "$i" -eq 5 ]; then break; fi # Schleife verlassen
if [ $((i % 2)) -eq 0 ]; then continue; fi # Rest überspringen
echo "$i"
done
break bricht die Schleife komplett ab, continue springt direkt zum nächsten Durchlauf.
Was macht continue in einer Schleife?
Stolperfallen & Sicherheit
Eine while-Schleife ohne fortschreitende Bedingung wird zur Endlosschleife – vergiss das Hochzählen (i=$((i+1))) nicht. Eine versehentliche Endlosschleife bremst kannst du mit Strg + C abbrechen. Beim Durchlaufen von Dateien mit Leerzeichen im Namen verwende "$datei" in Anführungszeichen und beim Lesen read -r, damit Sonderzeichen korrekt behandelt werden.