10 Bash-For-Loop-Beispiele mit Erläuterungen

Die For-Schleife ist ein integraler Bestandteil jeder Programmiersprache. Es ermöglicht Programmen, eine bestimmte Anzahl von Elementen zu durchlaufen.

Wenn Sie beispielsweise eine Liste oder ein Array von ’n‘ Elementen durchlaufen möchten, verwenden Sie eine for-Schleife. Nehmen wir ein einfaches Beispiel:

1Violett2Indigo3Blau4GrünRegenbogentisch

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

Bash für Schleife

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

#!/bin/bash

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

do

 ACTION 1

 ACTION 2

 .....

done

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

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

Sie können diese Programme direkt auf 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 = Violet, Indigo, Blue, Green, Yellow, Orange, Red

Wir können die obige Zeichenfolgenliste mit der Bash For-Schleife wie folgt drucken:

#! /bin/sh

# Define the list

rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red

# Comma separator pattern using //,/

for colors in ${rainbowColorList//,/ }

do

   echo $colors

done

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

#Output

Violet
Indigo
Blue
Green
Yellow
Orange
Red

Lesen eines Arrays

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

rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")

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

     echo "I like $colors"

done

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

#Output

I like Violet
I like Indigo
I like Blue
I like Green
I like Yellow
I like Orange
I like Red

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

#Printing with index

rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")

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

do

  echo "Color at index " $i " : " "${rainbowArray[$i]}"

  i=$((i+1));

done
#Output

Color at index 0 : Violet
Color at index 1 : Indigo
Color at index 2 : Blue
Color at index 3 : Green
Color at index 4 : Yellow
Color at index 5 : Orange
Color at index 6 : Red

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

  Haben Sie Probleme mit der Paint.net-Installation? (GELÖST)

Zahlenbereich iterieren

Wir können Bash For Loop verwenden, um über einen Bereich von Zahlen zu iterieren.

#iterating over range of numbers

echo "Countdown begins..."

for N in {10..0}

do

    echo "$N"

done

Das ‚..‘ gibt einen Zahlenbereich an.

#Output

10
9
8
7
6
5
4
3
2
1
0

Wir können Zählzahlen auch überspringen, indem wir den Bereich angeben.

Im folgenden Beispiel überspringen wir das Zählen um 3.

#iterating with skip counting

echo "Countdown begins..."

for N in {30..0..3}

do

    echo "$N"

done

Das obige Programm beginnt mit 30 als erste Zahl und zählt bis 0 herunter. Der letzte Parameter in der for-Schleife ‚3‘ gibt die Anzahl der Überspringungen an.

#Output

30
27
24
21
18
15
12
9
6
3
0

Zeichenfolgen und Zeichen

Mit Bash For Loop können wir viele interessante Zeichenfolgenoperationen durchführen.

Beispielsweise können wir jedes Zeichen einer Zeichenfolge lesen, indem wir den Operator „seq“ in einer For-Schleife verwenden:

#read characters of a string

myword="welcome"

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

do

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

done

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

#Output

W
e
l
c
o
m
e

Wir können die Zeichenfolgen auch einzeln durch Leerzeichen getrennt drucken:

#read each word from a sentence

mysentence="Welcome to wdzwdz. One stop hub for all techies"

for word in $mysentence; do

    echo $word

done
#Output

Welcome 
to 
wdzwdz. 
One 
stop 
hub 
for 
all 
techies

Ausdrücke

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

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

do 

  echo "Counting down...$var"

done
#Output

Counting down...10
Counting down...9
Counting down...8
Counting down...7
Counting down...6
Counting down...5
Counting down...4
Counting down...3
Counting down...2
Counting down...1
Counting down...0

Lesen von Befehlszeilenargumenten

Um aus Befehlszeilenargumenten zu lesen, verwenden wir den Befehl „read“. Im folgenden Beispiel erhalten wir einige Zahlen vom Benutzer und drucken die Summe mit Bash For Loop. Wir verwenden die Variable total, um die Zwischen- und Endsumme oder die Summe der Zahlen zu speichern.

read -a array -p "Enter the numbers you want to add:"

total=0

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

  let total+=$i

done

echo "Sum of the numbers is: $total"

Die Ausgabe ist:

#Output

Enter the numbers you want to add: 3 4 66
Sum of the numbers is: 73

Gerade und ungerade Zahlen finden

Um ungerade und gerade Zahlen zwischen 1 und 10 (oder eine beliebige Zahl N) zu finden, sollten wir die if-Bedingung zusammen mit Bash for Loop verwenden. Um eine gerade Zahl zu bestimmen, teilen wir die Zahl durch 2 und wenn der Rest 0 ist, kategorisieren wir sie als gerade, sonst ungerade.

#declare the list where the even and odd numbers will be sorted and kept

evennum=""

oddnum=""

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

do

remainder=$(( $i % 2 ))

if [ $remainder -eq 0 ]; then

 evennum="$evennum $i "

else

 oddnum="$oddnum $i "

fi

done

echo "Even numbers are: "$evennum

echo "Odd numbers are: "$oddnum

Beachten Sie, dass wir im obigen Beispiel den Bereich mit 10 angeben. Wir können diese Zahl ändern, um gerade und ungerade Zahlen zwischen beliebigen Bereichen zu erhalten. Sie können auch versuchen, die Nummer des Benutzers zu lesen, indem Sie den Befehl „read“ verwenden, den wir im vorherigen Abschnitt gelernt haben.

#Output

Even numbers are: 2 4 6 8 10
Odd numbers are: 1 3 5 7 9

Endlosschleife

Infinity oder Endlosschleife ist eine Schleife, die nicht anhält, und das Programm muss mit Strg+C zum Anhalten gezwungen werden. Wir können ganz einfach eine Endlosschleife erstellen, indem wir das ‚; ;‘ Operator innerhalb der for-Schleife:

for (( ; ; ))

do

  echo "Welcome to wdzwdz"

done
#Output

Welcome to wdzwdz
Welcome to wdzwdz
Welcome to wdzwdz
Welcome to wdzwdz
Welcome to wdzwdz
Welcome to wdzwdz
Welcome to wdzwdz
Welcome to wdzwdz
Welcome to wdzwdz
Welcome to wdzwdz
^C
$

Break-Anweisung

Break-Anweisungen werden verwendet, um die Schleife zu unterbrechen, wenn eine „if“-Bedingung erfüllt ist.

for color in Violet Indigo Blue Green Yellow Orange Red

do

  if [[ "$color" == 'Green' ]]; then

    break

  fi

  echo "Searching for Green, the color now is $color"

done

echo "I found my color $color"

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 ist, verlässt das Programm die Schleife aufgrund der break-Anweisung.

#Output

Searching for Green, the color now is Violet
Searching for Green, the color now is Indigo
Searching for Green, the color now is Blue
I found my color Green

Erklärung fortsetzen

Weiter wird verwendet, um die aktuelle Schleife zu überspringen und basierend auf einer bestimmten Bedingung zur nächsten zu wechseln. Wenn Sie beispielsweise die Farbe „Grün“ aus unserem vorherigen Programm nicht drucken möchten, können Sie fortfahren, und alle anderen Farben außer Grün werden angezeigt.

for color in Violet Indigo Blue Green Yellow Orange Red

do

  if [[ "$color" == 'Green' ]]; then

    continue

  fi

  echo "$color"

done
#Output

Violet
Indigo
Blue
Yellow
Orange
Red

Letzte Worte

Wir haben die häufigsten Verwendungen einer Bash-For-Schleife mit Strings, Ganzzahlen, Arrays und Listen behandelt. Wenn Sie Linux lernen, aber einen Windows 10-Computer haben, können Sie die WSL-Funktion verwenden und Linux auf Ihrem Windows-Computer installieren.

  So löschen, archivieren und bearbeiten Sie einen Slack-Channel (vollständiges Tutorial)

Sie können das Linux-Terminal dann ähnlich wie CMD verwenden.

Als Nächstes können Sie nachlesen, wie Sie Bash-Skripte mit Python ausführen?