Shell Prog: Kapitel 4.10 - 4.11
Iterationen (Schleifen) in Bash ermöglichen es, wiederholt eine Gruppe von Befehlen auszuführen, bis eine bestimmte Bedingung erfüllt ist. Bash bietet dafür mehrere Arten von Schleifen, die für unterschiedliche Zwecke verwendet werden können.
Die for-Schleife wird verwendet, um durch eine Liste von Werten oder Dateien zu iterieren.
for variable in Liste; do # Befehle done
#!/bin/bash for name in Alice Bob Charlie; do echo "Hallo, $name!" done
Ausgabe:
Hallo, Alice! Hallo, Bob! Hallo, Charlie!
#!/bin/bash for file in *.txt; do echo "Datei: $file" done
Die while-Schleife führt Befehle aus, solange eine Bedingung wahr ist.
while [ Bedingung ]; do # Befehle done
#!/bin/bash zahl=1 while [ $zahl -le 5 ]; do echo "Zahl: $zahl" zahl=$((zahl + 1)) done
Ausgabe:
Zahl: 1 Zahl: 2 Zahl: 3 Zahl: 4 Zahl: 5
Diese Iteration liest eine Datei zeilenweise und stellt die Daten in die Variable data
.
Die Variable mit dem Dateinamen wird in der letzten Zeile mittels Umleitung (<
) angegeben.
filename=someFile.dat while read data; do # Process the data done < $filename ===== until-Schleife ===== Die **until-Schleife** ist das Gegenteil der **while-Schleife**: Sie läuft, bis eine Bedingung wahr wird. ==== Grundstruktur: ==== <code bash> until [ Bedingung ]; do # Befehle done
#!/bin/bash zahl=1 until [ $zahl -gt 5 ]; do echo "Zahl: $zahl" zahl=$((zahl + 1)) done
Ausgabe:
Zahl: 1 Zahl: 2 Zahl: 3 Zahl: 4 Zahl: 5
Bash bietet Befehle, um Schleifen zu kontrollieren:
# Mit break for i in {1..10}; do if [ $i -eq 5 ]; then break fi echo "Zahl: $i" done
# Mit continue for i in {1..5}; do if [ $i -eq 3 ]; then continue fi echo "Zahl: $i" done
Schleife | Beschreibung | Verwendung |
---|---|---|
for | Iteriert über eine Liste von Werten oder Dateien | Wiederholung bei bekannter Anzahl von Werten |
while | Läuft, solange eine Bedingung wahr ist | Dynamische Bedingung |
until | Läuft, bis eine Bedingung wahr wird | Dynamische Bedingung, Gegenteil von while |
break | Beendet die Schleife | Vorzeitiges Ende |
continue | Überspringt den aktuellen Schleifendurchlauf | Fortsetzen der Schleife |