Shell-Skripting · 6 min read · Nov 14, 2025
Shell-Skripting Teil 4: Wiederholungssteuerungsstrukturen
Willkommen zu Teil vier der Shell-Skripting-Tutorialreihe von HowtoForge (Klicken Sie hier, um Teil 1, Teil 2 und Teil 3 des Tutorials zu lesen). In diesem Teil werden wir die verschiedenen Wiederholungssteuerungsstrukturen der Bash-Shell behandeln und wie man jede Struktur anhand einiger Beispiele verwendet. Lassen Sie uns anfangen.
Einführung
Die Wiederholungssteuerungsstruktur, auch bekannt als Schleifensteuerungsstruktur, ist eine Art von Steuerungsstruktur in Programmiersprachen, die verwendet wird, um sich wiederholende oder rekursive Aufgaben zu vereinfachen. Die Schleifenanweisungen optimieren jeden Code, indem sie eine Möglichkeit bieten, den Code zu minimieren, was ihn einfacher zu debuggen macht als unstrukturierter Code, der dasselbe Ergebnis liefert. Es gibt drei Arten von Schleifenanweisungen, die die Bash-Shell unterstützt - die for-, while- und until-Schleifen.
For-Schleifen
Die for-Schleife ist eine Schleifenanweisung, die das Schlüsselwort for verwendet, um eine wiederholte Anweisung zu deklarieren. Die Bash unterstützt verschiedene Syntaxen für die for-Schleifenanweisung:
Syntax 1: For-in-Struktur
for in
do
#### Ihre Anweisung hier
done
Diese Syntax beginnt mit dem Schlüsselwort for, gefolgt von einem Variablennamen, dem Schlüsselwort in und der Liste möglicher Werte für die Variable. Jeder Wert in der Liste wird durch ein Leerzeichen getrennt, und der Beginn der Codezeilen, die wiederholt werden, wird in do definiert und endet mit dem Schlüsselwort done.
Lassen Sie uns eine einfache for-Schleifenanweisung erstellen, die es dem Benutzer ermöglicht, 5 Werte einzugeben und die Summe der Zahlen zu erhalten:
#!/bin/bash
result=0;
input=0;
for var in 1 2 3 4 5
do
printf "Geben Sie die ganze Zahl %d ein: " $var
read input
result=$((result+input))
done
echo "Das Ergebnis ist " $result
In diesem Beispiel dient die Variable var als Zähler unserer Schleife. Ihr Wert wird in der Liste der Zahlen nach dem Schlüsselwort in definiert, und die Shell ändert die Werte der Variablen var nach jeder Ausführung des Zyklus in der Schleifenanweisung. Da es nur fünf ganze Zahlen in unserer Liste gibt, wird die Shell den Code innerhalb unserer Schleifenanweisung nur fünfmal ausführen.
Syntax 2: For-Schleifenanweisung mit String-Listenwerten
Sie können auch eine Variable deklarieren, die die Liste der Elemente für Ihren Zähler enthält. Betrachten Sie beispielsweise den folgenden Code:
#!/bin/bash
list="var1 var2 var3 var4"
var=""
mkdir sample
cd sample
echo "Erstelle die Verzeichnisse...."
for var in $list
do
mkdir $var
done
Die Zeile list=”var1 var2 var3 var4” definiert die Werte der Listenvariablen. Sie wurde dann in der Zeile for var in $list zugewiesen, und schließlich werden die Verzeichnisse in der Zeile mkdir $var erstellt.
Syntax 3: For-Schleifenanweisung mit Liste als Datei
Sie können auch eine Liste aus einer vorhandenen Datei abrufen, die in der for-Schleifenanweisung verwendet werden soll, anstatt sie innerhalb Ihres Codes zu deklarieren, indem Sie den Befehl cat verwenden. Öffnen Sie beispielsweise Ihren bevorzugten Texteditor und listen Sie mindestens fünf Verzeichnisnamen auf.

Öffnen Sie als Nächstes einen neuen Tab im selben Texteditor und erstellen Sie ein neues Skript. Dieses Skript sollte im selben Verzeichnis gespeichert werden, in dem die Liste der Verzeichnisse, die Sie zuvor erstellt haben, gespeichert ist.
#!/bin/bash
dirList=$(cat list)
echo "Erstelle Verzeichnisse...."
for var in $dirList
do
mkdir $var
done
Dieses Beispiel ist praktisch, wenn Sie Hunderte von Verzeichnissen auf Ihrem Linux-Computer erstellen müssen, finden Sie nicht?
Syntax 4: C-ähnliche Syntax
for((initialization; boolean_test; increment/decrement))
do
#### Ihr Code kommt hierhin
doneVielleicht ist die bekannteste Struktur der for-Schleife, die die Shell unterstützt, die C-ähnliche Struktur. Die Schleife beginnt mit der Initialisierung der Zählervariablen, und dann bewertet die Shell den booleschen Ausdruck, der nach der Initialisierung deklariert wird. Wenn das Ergebnis des booleschen Ausdrucks wahr ist, führt die Shell die Anweisungen innerhalb der do-Klausel aus, andernfalls beendet sie die Schleifenanweisung und fährt mit der Zeile nach dem Schlüsselwort done fort. Die Shell fährt mit der nächsten Iteration durch die Inkrement- oder Dekrement-Anweisung fort, die nach dem booleschen Test deklariert ist. Als Beispiel rekonstruieren wir unser erstes Beispiel mit dieser Struktur.
#!/bin/bash
result=0
input=0
for((var=1;var<=5;var++))
do
printf "Geben Sie die ganze Zahl %d ein: " $var
read input
result=$((result+input))
done
echo $result
While-Wiederholungsanweisung
Die while-Anweisung ist eine Art von wiederholter Struktur in Bash, die das Schlüsselwort while verwendet. Im Gegensatz zur C-ähnlichen Syntax der for-Schleifenstruktur trennt die while-Wiederholungssteuerungsstruktur die Initialisierung, den booleschen Test und die Inkrement-/Dekrement-Anweisung.
Syntax 1: While-Struktur mit arithmetischen Symbolen basierten Bedingungsanweisungen
while(condition)
do
###Ihr Code kommt hierhin
done Um die while-Schleife von den anderen Schleifenanweisungen zu unterscheiden, lassen Sie uns unser erstes Beispiel für die while-Anweisung konstruieren.
#!/bin/bash
result=0
input=0
var=1
while((var <= 5))
do
printf "Geben Sie die ganze Zahl %d ein: " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "Das Ergebnis ist " $result
In unserem Beispiel beginnt die while-Anweisung mit der Initialisierung unserer Zählervariablen var. Als Nächstes wird der boolesche Test nach dem Schlüsselwort while deklariert, und die Menge von Anweisungen, die wiederholt werden sollen, wird innerhalb der do- und done-Anweisungen deklariert. In while-Anweisungen beginnt der Interpreter nur mit der Ausführung der Wiederholung von Codes, wenn das Ergebnis des booleschen Tests wahr ist. Andererseits wird die Schleifenanweisung nur die Iteration von Codes beenden, wenn das Ergebnis des booleschen Ausdrucks falsch ist.
Syntax 2: While-Wiederholungsanweisung mit mnemonikbasierten Bedingungsanweisungen
while [ ]
do
####Ihr Code kommt hierhin
done Sie können auch mnemonikbasierte Bedingungsanweisungen innerhalb einer while-Schleifenanweisung deklarieren. Zur Deklaration wird eine eckige Klammer anstelle von Klammern verwendet. (Überprüfen Sie die mnemonikbasierten Bedingungsanweisungen hier) Zum Beispiel:
#!/bin/bash
var=1;
while [ $var -le 5 ]
do
printf "Geben Sie die ganze Zahl %d ein: " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "Das Ergebnis ist " $result
Syntax 3: While-Wiederholungsanweisung mit dateibasierten Bedingungsanweisungen
while read
do
####Ihr Code kommt hierhin
done < So wie wir es in der for-Schleifenanweisung gemacht haben, können Sie auch eine Textdatei öffnen und sie in der while-Wiederholungsanweisung zuordnen. Zum Beispiel:
#!/bin/bash
mkdir sample2
cd sample2
echo "Erstelle Verzeichnisse..."
while read var
do
mkdir $var
done

In diesem Beispiel habe ich die Liste, die wir vorhin erstellt haben, wiederverwendet und ein neues Skript im selben Verzeichnis erstellt. Beachten Sie, dass, wenn sich Ihre Textdatei in einem anderen Verzeichnis befindet, Sie den genauen Pfad der Datei nach dem < Symbol angeben müssen.
Until-Wiederholungsanweisung
Eine weitere Art von Schleifenanweisung, die die Bash unterstützt, ist die until-Struktur. Die until-Anweisung führt jeden Befehl innerhalb der Schleife aus, bis der deklarierte boolesche Ausdruck falsch ist. Es ist das genaue Gegenteil der while-Anweisung.
Syntax 1: Until-Schleife mit arithmetischen Symbolen basierten Bedingungsanweisungen
until (())
do
####Befehlsmenge
done Lassen Sie uns ein Beispiel haben:
result=0
input=0
var=1
until((var > 5))
do
printf "Geben Sie die ganze Zahl %d ein: " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "Das Ergebnis ist " $result
Syntax 2: Until-Wiederholungsanweisung mit mnemonikbasierten Bedingungsanweisungen
until [ ]
do
####Ihr Code kommt hierhin
done Da die until-Anweisung das Gegenteil der while-Wiederholungsanweisung ist, können Sie auch eine mnemonikbasierte Bedingungsanweisung in der until-Struktur deklarieren. Um jedoch die Schleife zu beenden, müssen Sie eine gegenteilige Bedingungsanweisung deklarieren - das heißt, die Bedingungsanweisung muss falsch bewertet werden.
!/bin/bash
result=0
input=0
var=1
until [ $var -gt 5 ]
do
printf "Geben Sie die ganze Zahl %d ein: " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "Das Ergebnis ist " $result
Fazit
Dieser Tutorialteil behandelt die drei Schleifenstrukturen, die die Bash unterstützt - die for-, while- und until-Schleifenanweisung. Jede dieser Anweisungen hat eine andere Struktur, Verwendung und Vorteile. Die Bash unterstützt verschiedene Strukturen, die Programmierern mehr Auswahlmöglichkeiten bieten und somit das Shell-Skripting einfacher zu codieren machen.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.