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

Wiederholungsanweisung mit for in bash

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

Lesen von Stringwerten mit einer for-Schleifenanweisung

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.

Erstellen von Verzeichnissen aus einer Textdatei mit einer for-Schleife

Ö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

Erstellen von Verzeichnissen aus einer Textdatei mit einer for-Schleife

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  
 done

Vielleicht 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

For-Wiederholungsanweisungen in bash

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

While-Wiederholungsanweisung in Bash-Shell-Skripting

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

While-Wiederholungsanweisung im Shell-Skripting

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

Lesen von Dateien mit einer while-Schleife im Bash-Skripting

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

Until-Wiederholungsanweisung im Shell-Skripting

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

Until-Wiederholungsanweisung im Shell-Skripting

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.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.