Die For-Schleife ist ein wesentlicher Bestandteil jeder Programmiersprache. Mit ihr können Programme durch eine bestimmte Anzahl von Elementen iterieren.

Wenn Sie zum Beispiel eine Liste oder ein Array mit ‘n’ Elementen durchgehen wollen, verwenden Sie eine for-Schleife. Lassen Sie uns ein einfaches Beispiel nehmen:

1Violett
2Indigo
3Blau
4Grün
Regenbogen-Tabelle

Um eine Aktion auszuführen oder die Elemente in der obigen Tabelle zu durchlaufen, benötigen wir eine For-Schleife.

Bash For-Schleife

In einem Bash-Skript lautet die For Loop-Syntax wie folgt:

#!/bin/bash

for VAR in 1 2 3 4 5.....N

do

 AKTION 1

 AKTION 2

 .....

erledigt

Die Bash For Loop ist recht einfach. Die erste Zeile #!/bin/bash zeigt an, dass der Code ein Bash-Skript ist. VAR steht für die temporäre Variable, die für die Schleife verwendet wird. N gibt die maximale Anzahl der Iterationen an. ‘do’ und ‘done’ starten bzw. stoppen die Schleife. Actions sind die Befehle, die innerhalb der Schleife ausgeführt werden.

Wir können Bash For Loop mit verschiedenen Variablen wie Listen, Strings, Ganzzahlen und Arrays ausführen. Dieser Artikel zeigt einige gängige Beispiele für die Bash For Loop.

Sie können diese Programme direkt in der Bash-Befehlszeile ausführen oder sie in einer Datei speichern und die Datei mit dem Bash-Befehl filename.sh ausführen.

Statische Liste lesen

Betrachten Sie die folgende Liste – rainbowColorList = Violett, Indigo, Blau, Grün, Gelb, Orange, Rot

Wir können die obige String-Liste mit Hilfe der Bash For Loop wie folgt ausgeben:

#! /bin/sh

# Definieren Sie die Liste

rainbowColorList=Violett,Indigo,Blau,Grün,Gelb,Orange,Rot

# Komma-Trennzeichen-Muster mit //,/

für Farben in ${rainbowColorList//,/ }

do

   echo $Farben

done

Die Ausgabe ist die Liste der Elemente in einer neuen Zeile.

#Ausgabe

Violett
Indigo
Blau
Grün
Gelb
Orange
Rot

Ein Array lesen

Die Syntax für die Deklaration eines Arrays ist anders. Verwenden Sie Klammern für jedes Element (String).

rainbowArray=("Violett" "Indigo" "Blau" "Grün" "Gelb" "Orange" "Rot")

for Farben in "${rainbowArray[@]}"; do

     echo "Ich mag $Farben"

done

@’ wird verwendet, um durch jedes Element im Array zu iterieren.

#Ausgabe

Ich mag Violett
Ich mag Indigo
Ich mag Blau
Ich mag Grün
Ich mag Gelb
Ich mag Orange
Ich mag Rot

Wir können auch die For-Schleife verwenden, um die Indizes und die Array-Elemente zu drucken.

#Drucken mit Index

rainbowArray=("Violett" "Indigo" "Blau" "Grün" "Gelb" "Orange" "Rot")

for i in "${!rainbowArray[@]}";

do

  echo "Farbe bei Index " $i " : " "${rainbowArray[$i]}"

  i=$((i 1));

done
#Ausgabe

Farbe bei Index 0 : Violett
Farbe bei Index 1 : Indigo
Farbe bei Index 2 : Blau
Farbe bei Index 3 : Grün
Farbe bei Index 4 : Gelb
Farbe bei Index 5 : Orange
Farbe bei Index 6 : Rot

Beachten Sie, dass wir ‘!’ in der Schleife verwenden, um den Elementindex zu erhalten.

Zahlenbereich iterieren

Wir können die Bash For-Schleife verwenden, um über einen Zahlenbereich zu iterieren.

#Iterieren über Zahlenbereich

echo "Countdown beginnt..."

for N in {10..0}

do

    echo "$N"

done

Das ‘..’ zeigt einen Zahlenbereich an.

#Ausgabe

10
9
8
7
6
5
4
3
2
1
0

Wir können auch Zahlen überspringen, indem wir den Bereich angeben.

Im folgenden Beispiel wird die Zahl 3 übersprungen.

#Iterieren mit Auslassungszählung

echo "Countdown beginnt..."

für N in {30..0..3}

do

    echo "$N"

done

Das obige Programm beginnt mit 30 als erster Zahl und zählt dann bis 0. Der letzte Parameter in der for-Schleife ‘3’ gibt die Anzahl der Übersprünge an.

#Ausgabe

30
27
24
21
18
15
12
9
6
3
0

Zeichenketten und Zeichen

Mit der Bash For Loop können wir eine Menge interessanter String-Operationen durchführen.

Zum Beispiel können wir jedes Zeichen einer Zeichenkette lesen, indem wir den Operator ‘seq’ in einer For-Schleife verwenden:

#Zeichen einer Zeichenkette lesen

meinwort="willkommen"

for i in $(seq 1 ${#myword})

do

 echo "${myword:i-1:1}"

done

Beachten Sie, dass die ‘seq’ mit 1 beginnen sollte, um das erste Zeichen zuerst zu erhalten.

#Ausgabe

W
e
l
c
o
m
e

Wir können die durch Leerzeichen getrennten Zeichenfolgen auch einzeln ausgeben:

#Lesen Sie jedes Wort aus einem Satz

mysentence="Willkommen bei GeekFlare. Eine zentrale Anlaufstelle für alle Technikbegeisterten"

for wort in $mysentence; do

    echo $wort

done
#Ausgabe

Willkommen 
bei 
GeekFlare. 
Eine 
haltestelle 
hub 
für 
alle 
techniker

Ausdrücke

Ähnlich wie in jeder anderen Programmiersprache, z.B. Java, können wir Ausdrücke innerhalb einer Bash For-Schleife platzieren.

for (( var=10; var>=0; var-- ))

do 

  echo "Rückwärtszählen...$var"

done
#Ausgabe

Abwärtszählung...10
Herunterzählen...9
Abwärts zählen...8
Abwärts zählen...7
Abwärts zählen...6
Abwärts zählen...5
Abwärts zählend...4
Abwärts zählend...3
Abwärts zählen...2
Abwärtszählend...1
Herunterzählen...0

Lesen von Befehlszeilenargumenten

Um Befehlszeilenargumente zu lesen, verwenden wir den Befehl ‘read’. Im folgenden Beispiel erhalten wir einige Zahlen vom Benutzer und geben die Summe mit Hilfe der Bash For-Schleife aus. Wir verwenden die Variable total, um die Zwischen- und Endsumme oder die Summe der Zahlen zu speichern.

read -a array -p "Geben Sie die Zahlen ein, die Sie addieren möchten:"

gesamt=0

for i in ${array[@]}; do

  let gesamt =$i

done

echo "Die Summe der Zahlen ist: $summe"

Die Ausgabe ist:

#Ausgabe

Geben Sie die Zahlen ein, die Sie addieren möchten: 3 4 66
Die Summe der Zahlen ist: 73

Finden von ungeraden und geraden Zahlen

Um gerade und ungerade Zahlen zwischen 1 und 10 (oder eine beliebige Zahl N) zu ermitteln, sollten wir die if-Bedingung zusammen mit der Bash for-Schleife verwenden. Um eine gerade Zahl zu ermitteln, dividieren wir die Zahl durch 2 und wenn der Rest 0 ist, dann wird sie als gerade eingestuft, ansonsten als ungerade.

#Deklarieren Sie die Liste, in der die geraden und ungeraden Zahlen sortiert und gespeichert werden sollen

evenennum=""

oddnum=""

for (( i=1; i<=10; i ))

do

rest=$(( $i % 2 ))

if [ $Rest -eq 0 ]; then

 evennum="$evennum $i "

sonst

 oddnum="$oddnum $i "

fi

done

echo "Gerade Zahlen sind: "$evennum

echo "Ungerade Zahlen sind: "$oddnum

Beachten Sie, dass wir im obigen Beispiel einen Bereich von 10 angeben. Wir können diese Zahl ändern, um gerade und ungerade Zahlen in einem beliebigen Bereich zu erhalten. Sie können auch versuchen, die Zahl vom Benutzer zu lesen, indem Sie den Befehl ‘read’ verwenden, den wir im vorherigen Abschnitt gelernt haben.

#Ausgabe

Gerade Zahlen sind: 2 4 6 8 10
Ungerade Zahlen sind: 1 3 5 7 9

Unendliche Schleife

Eine unendliche Schleife ist eine Schleife, die nicht aufhört, ausgeführt zu werden, und das Programm muss mit Strg C zum Anhalten gezwungen werden. Wir können eine unendliche Schleife ganz einfach mit dem Operator ‘; ;’ innerhalb der for-Schleife erstellen:

for (( ; ; ))

do

  echo "Willkommen bei Geekflare"

done
#Ausgabe

Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
^C
$

Break-Anweisung

Break-Anweisungen werden verwendet, um die Schleife zu verlassen, wenn eine ‘if’-Bedingung erfüllt ist.

for color in Violett Indigoblau Grün Gelb Orange Rot

do

  if [[ "$Farbe" == 'Grün' ]]; then

    break

  fi

  echo "Ich suche nach Grün, die Farbe ist jetzt $color"

done

echo "Ich habe meine Farbe $color gefunden"

In diesem Beispiel versuchen wir, die Farbe Grün zu finden. Die For-Schleife durchläuft jede Farbe, und sobald die grüne Farbe gefunden wurde, verlässt das Programm die Schleife aufgrund der break-Anweisung.

#Ausgabe

Suche nach Grün, die Farbe ist jetzt Violett
Suche nach Grün, die Farbe ist jetzt Indigo
Suche nach Grün, die Farbe ist jetzt Blau
Ich habe meine Farbe Grün gefunden

Continue-Anweisung

Continue wird verwendet, um die aktuelle Schleife zu überspringen und auf der Grundlage einer bestimmten Bedingung zur nächsten Schleife überzugehen. Wenn Sie z.B. die Farbe ‘Grün’ aus unserem vorherigen Programm nicht ausgeben möchten, können wir continue einfügen, und alle anderen Farben außer Grün werden angezeigt.

for color in Violett Indigoblau Grün Gelb Orange Rot

do

  if [[ "$Farbe" == 'Grün' ]]; then

    weiter

  fi

  echo "$Farbe"

done
#Ausgabe

Violett
Indigo
Blau
Gelb
Orange
Rot

Letzte Worte

Wir haben die gebräuchlichsten Verwendungen einer Bash For Loop mit Strings, Ganzzahlen, Arrays und Listen behandelt. Wenn Sie Linux lernen, aber einen Windows 10 Rechner haben, können Sie die WSL-Funktion nutzen und Linux auf Ihrem Windows Rechner installieren.

Anschließend können Sie das Linux-Terminal auf ähnliche Weise wie CMD verwenden.

Als nächstes können Sie sich ansehen, wie Sie Bash-Skripte mit Python ausführen können.