Schleifenarten – Theorie & Praxis

Moin, hier erkläre ich euch, welche Schleifen es unter Linux gibt und nenne dazu jeweils Beispiele.

Ok legen wir los.

1. Die kopfgesteurte Schleife mit „while“
Die kopfgesteuerte Schleife prüft vor jedem Durchlauf die Bedingung. Im Extremfall wird diese Schleife also kein einziges Mal durchlaufen, wenn nämlich die Bedingung schon von vorneherein nicht wahr ist. Eine while-Schleife wird auch gern als Endlosschleife benutzt, das bedeutet, dass die Bedingung immer wahr ist.

Aufbau:

while [ Ausdruck ]
do
  Kommandos...
done

 

Beispiel:

#!/bin/bash
#Dateiname: 1-while.sh
a=1
b=5

while [ "$a" -le "$b"]    # -le = "lower then" - kleiner als
do
  echo "Die Variable $a ist kleiner als $b" # zeigt den Text an
  let a=$a+1                                # erhöht a nach jedem Durchlauf um 1
done

 
2. Die kopfgesteurte Listenschleife mit „for“
Eine Listenschleife durchläuft die Schleife so oft, wie die Liste Elemente hat. Bei jedem Schleifendurchlauf bekommt die Variable den Wert des jeweiligen Listenelements.

Aufbau:

for Variable in Liste
do
  Kommandos...
done

 

Beispiel:

#!/bin/bash
#Dateiname: 2-for-standard.sh
for name in Jens Julien Lars
do
  echo $name
done

Diese Schleife läuft somit genau 3mal durch. Im ersten Durchgang bekommt die Variable name den Wert „Jens“, im zweiten „Julien“ und im dritten „Lars“. Die Ausgabe der Schleife wäre also:
Jens
Julien
Lars

Ihr wollt gerne mit mehreren Dateien eines Dateitypes etwas machen?
Dann hier ein weiteres Beispiel:

#!/bin/bash
#Dateiname: 3-for-mit-ls.sh
cd /home/Julien/Dokumente       # wechselt zum Zielverzeichnis
for dateiname in `ls *.txt`     # *.txt - alle Dateien welche die Dateiendung .txt besitzen
do
  echo $dateiname               # Ausgabe, siehe unten!
done

Ausgabe: (bei mir)
abi.txt
blabla.txt
test.txt
text.txt
zebra.txt

 

Natürlich gibt es wie immer alle Quelltexte in Form einer Datei HIER zum Download.

Viel Spaß euch ;)
– Julien

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert