Bash: „for“ Schleifen

Wie nutze ich eine „for“ schleife in der Shell. Wie erstelle ich endlose schleifen?

Eine for Schleife erlaubt es Bash-Code wiederholt auszuführen. Eine Schleife ist eine Kontrollstruktur, die wiederholt einen Anweisungs-Block (den Schleifenrumpf oder Schleifenkörper) so lange, wie eine Laufbedingung gültig ist oder eine Abbruchbedingung eintritt abarbeitet.
Schleifen, deren Laufbedingung immer erfüllt ist oder ihre Abbruchbedingung niemals erreichen (oder keine Abbruchbedingung haben) sind Endlosschleifen.

Die Zähl-Schleife:

Bei dieser Schleifenvariante können auch andere Werte als Zahlen angegeben werden.

Seit Bash Version 3.x gibt es einen eingebauten „range“ Support:

In der Bash Version 3.x kann leider noch nicht mit schritt weiten Umgehen, zum Glück gibt es den Linux Befehl „seq“.:

Ab Bash Version 4.0+ können auch die Schrittweiten angegeben werden, was bedeutend schneller ist als der Aufruf des externen Programms „seq“. Die Syntax lautet hier: {START..ENDE..SCHRITTWEITE}

Eine weitere Art der for Schleife ist ein gemeinsames Erbe mit der Programmiersprache C. Bestehend aus einer Initialisierung (EXP1), eines Zustands-Tests (EXP2), und eines Zähler Ausdrucks (EXP3).

Ein einfaches Beispiel für diese Art der Schleife welches bis 5 Zählt sieht dann ungefähr wie folgt aus.:

Und letztendlich die Endlosschleife

In der Endlosschleife werden einfach die 3 Parameter leer gelassen, somit wird die (leere) Abbruchbedingung nie erreicht.

Bedingter Abbruch mit ‚break‘

Eine Schleife kann auch mit dem Befehl ‚break‘ innerhalb der Schleife unterbrochen werden. Ein verlassen mit „break“ ist aus for, while und until Schleifen möglich. Das ganze muss dann so aussehen:

Das folgende Shell Script will alle Dateien im Verzeichnis ‚/etc‘ ausgeben, jedoch abbrechen wenn die Datei ‚/etc/resolv.conf‘ erreicht wird.

Vorzeitige Fortsetzung der Schleife mit Hilfe der continue-Anweisung

Um den nächsten Durchlauf der umschließenden for, while und until Schleife vorzeitig fortzusetzen wird die Anweisung ‚continue‘ verwendet.

Beispielscript, welches von allen Dateien eine Kopie mit dem Namen *.bak anlegt, wenn am Dateiname bereits .bak enthalten ist wird die Datei übersprungen.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate