GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash für Schleife

Schleifen sind eines der grundlegenden Konzepte von Programmiersprachen. Schleifen sind praktisch, wenn Sie eine Reihe von Befehlen immer wieder ausführen möchten, bis eine bestimmte Bedingung erreicht ist.

In Skriptsprachen wie Bash sind Schleifen nützlich, um sich wiederholende Aufgaben zu automatisieren.

Es gibt drei grundlegende Schleifenkonstrukte in Bash-Skripten, for Schleife, while Schleife und until Schleife.

In diesem Tutorial behandeln wir die Grundlagen von for-Schleifen in Bash. Wir zeigen Ihnen auch, wie Sie den break verwenden und continue Anweisungen, um den Ablauf einer Schleife zu ändern.

Die Standard-Bash for Schleife #

Der for Schleife iteriert über eine Liste von Elementen und führt die gegebenen Befehle aus.

Die Bash for Schleife hat folgende Form:

for item in [LIST]
do
  [COMMANDS]
done

Die Liste kann eine Reihe von Zeichenfolgen sein, die durch Leerzeichen getrennt sind, ein Zahlenbereich, die Ausgabe eines Befehls, ein Array usw.

Loop über Strings #

Im Beispiel unten durchläuft die Schleife jedes Element in der Liste der Zeichenfolgen und die Variable element wird auf das aktuelle Element gesetzt:

for element in Hydrogen Helium Lithium Beryllium
do
  echo "Element: $element"
done

Die Schleife erzeugt die folgende Ausgabe:

Element: Hydrogen
Element: Helium
Element: Lithium
Element: Beryllium

Schleife über einen Zahlenbereich #

Sie können den Sequenzausdruck verwenden, um einen Bereich von Zahlen oder Zeichen anzugeben, indem Sie einen Anfangs- und einen Endpunkt des Bereichs definieren. Der Sequenzausdruck hat folgende Form:

{START..END}

Hier ist eine Beispielschleife, die alle Zahlen von 0 bis 3 durchläuft:

for i in {0..3}
do
  echo "Number: $i"
done
Number: 0
Number: 1
Number: 2
Number: 3

Ab Bash 4 ist es auch möglich, bei der Verwendung von Bereichen eine Schrittweite anzugeben. Der Ausdruck hat folgende Form:

{START..END..INCREMENT}

Hier ist ein Beispiel, das zeigt, wie man um 5 erhöht:

for i in {0..20..5}
do
  echo "Number: $i"
done
Number: 0
Number: 5
Number: 10
Number: 15
Number: 20

Array-Elemente durchlaufen #

Sie können auch den for verwenden Schleife, um über ein Array von Elementen zu iterieren.

Im folgenden Beispiel definieren wir ein Array mit dem Namen BOOKS und Iterieren über jedes Element des Arrays.

BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby')

for book in "${BOOKS[@]}"; do
  echo "Book: $book"
done
Book: In Search of Lost Time
Book: Don Quixote
Book: Ulysses
Book: The Great Gatsby

Die Bash-for-Schleife im C-Stil #

Die Syntax des C-Stils for Schleife hat folgende Form:

for ((INITIALIZATION; TEST; STEP))
do
  [COMMANDS]
done

Die INITIALIZATION Teil wird nur einmal ausgeführt, wenn die Schleife beginnt. Dann der TEST Teil wird ausgewertet. Wenn es falsch ist, wird die Schleife beendet. Wenn der TEST wahr ist, Befehle innerhalb des Körpers von for Schleife ausgeführt werden, und der STEP Teil wird aktualisiert.

Im folgenden Beispielcode beginnt die Schleife mit der Initialisierung von i = 0 , und prüft vor jeder Iteration, ob i ≤ 10 . Wenn wahr, wird der aktuelle Wert von i ausgegeben und [erhöht die Variable] i um 1 (i++ ), andernfalls wird die Schleife beendet.

for ((i = 0 ; i <= 1000 ; i++)); do
  echo "Counter: $i"
done

Die Schleife wird 1001 Mal durchlaufen und die folgende Ausgabe erzeugen:

Counter: 0
Counter: 1
Counter: 2
...
Counter: 998
Counter: 999
Counter: 1000

break und continue Anweisungen #

Die break und continue Anweisungen können verwendet werden, um die Ausführung der for-Schleife zu steuern.

break Anweisung #

Die break Anweisung beendet die aktuelle Schleife und übergibt die Programmsteuerung an die Anweisung, die auf die beendete Anweisung folgt. Es wird normalerweise verwendet, um die Schleife zu beenden, wenn eine bestimmte Bedingung erfüllt ist.

Im folgenden Beispiel verwenden wir den if Anweisung, um die Ausführung der Schleife zu beenden, sobald das aktuelle iterierte Element gleich „Lithium“ ist.

for element in Hydrogen Helium Lithium Beryllium; do
  if [[ "$element" == 'Lithium' ]]; then
    break
  fi
  echo "Element: $element"
done

echo 'All Done!'
Element: Hydrogen
Element: Helium
All Done!

continue Anweisung #

Der continue -Anweisung verlässt die aktuelle Iteration einer Schleife und übergibt die Programmsteuerung an die nächste Iteration der Schleife.

Im folgenden Beispiel iterieren wir durch einen Zahlenbereich. Wenn das aktuelle iterierte Element gleich „2“ ist, wird continue -Anweisung bewirkt, dass die Ausführung zum Anfang der Schleife zurückkehrt und mit der nächsten Iteration fortfährt:

for i in {1..5}; do
  if [[ "$i" == '2' ]]; then
    continue
  fi
  echo "Number: $i"
done
Number: 1
Number: 3
Number: 4
Number: 5

Bash for Schleifenbeispiele #

Dateien mit Leerzeichen im Dateinamen umbenennen #

Das folgende Beispiel zeigt, wie Sie alle Dateien im aktuellen Verzeichnis mit einem Leerzeichen im Namen umbenennen, indem Sie das Leerzeichen durch einen Unterstrich ersetzen:

for file in *\ *; do
  mv "$file" "${file// /_}"
done

Lassen Sie uns den Code Zeile für Zeile aufschlüsseln:

  • Die erste Zeile erstellt einen for Schleife und iteriert durch eine Liste aller Dateien mit einem Leerzeichen im Namen. Der Ausdruck *\ * erstellt die Liste.
  • Die zweite Zeile gilt für jedes Element der Liste und verschiebt die Datei in eine neue, wobei das Leerzeichen durch einen Unterstrich ersetzt wird (_ ). Der Teil ${file// /_} verwendet die Shell-Parametererweiterung, um ein Muster innerhalb eines Parameters durch einen String zu ersetzen.
  • done zeigt das Ende des Loop-Segments an.

Änderung der Dateierweiterung #

Das folgende Beispiel zeigt, wie der Bash for verwendet wird Schleife, um alle Dateien mit der Endung .jpeg im aktuellen Verzeichnis umzubenennen, indem die Dateierweiterung von .jpeg in .jpg ersetzt wird.

for file in *.jpeg; do
    mv -- "$file" "${file%.jpeg}.jpg"
done

Analysieren wir den Code Zeile für Zeile:

  • Die erste Zeile erstellt einen for Schleife und iteriert durch eine Liste aller Dateien, die mit „.jpeg“ enden.
  • Die zweite Zeile gilt für jedes Element der Liste und verschiebt die Datei in eine neue, wobei „.jpeg“ durch „.jpg“ ersetzt wird. ${file%.jpeg} um den „.jpeg“-Teil aus dem Dateinamen zu entfernen, indem die Shell-Parametererweiterung verwendet wird
  • done zeigt das Ende des Loop-Segments an.

Schlussfolgerung #

Die Bash for Schleife wird verwendet, um einen bestimmten Satz von Befehlen wiederholt für eine festgelegte Anzahl von Malen auszuführen.

Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.


Linux
  1. Bash For Loop Guide und Beispiele

  2. Linux-Scripting:3 Anleitungen für While-Schleifen in Bash

  3. Wie erstelle ich eine For-Schleife mit einer veränderbaren Anzahl von Iterationen?

  4. Build-Nummer in Bash erhöhen?

  5. Beispiele für Bash-For- und While-Schleifen

Bash For Loop mit praktischen Beispielen

Bash-Scripting – For-Schleife mit Beispielen erklärt

Bash For-Schleifen mit Beispielen

Bash For Loop – Die praktischste Anleitung

Die Bash FOR-Schleife erklärt und vereinfacht

Bash-Skript für Schleife mit Beispielen erklärt