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:
1 | Violett |
2 | Indigo |
3 | Blau |
4 | Grün |
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.