Implementierung der for-Schleife in Bash

Muhammad Husnain 30 Januar 2023
  1. Bash for-Schleife
  2. Bash C-Style for-Schleifensyntax
  3. Bash-Style-Syntax Foreach/For-in
  4. Definieren von Bereichen und Sprunggröße in der Bash for-Schleife
  5. Erstellen der for-Schleife in der Bash-Eingabeaufforderung und Beheben des Problems mit dem Trennzeichen Semikolon ;
Implementierung der for-Schleife in Bash

In diesem Tutorial werden die verfügbaren Bash-Skriptformulierungen zum Schreiben einer Bash-for-Schleife besprochen.

Zuerst lernen wir die grundlegende Syntax und Konzepte kennen. Später werden wir die verschiedenen Typen im Bash-Skript kennenlernen, wie die C-artige for-Schleifennotation und den foreach- oder for-in-Stil.

Abschließend diskutieren wir noch das Thema Semikolon ; während Sie die for-Schleife in der Bash-Eingabeaufforderung machen.

Bash for-Schleife

Eine Schleife in einer Programmier- oder Skriptsprache ist eine iterative Kontrollstruktur, die verwendet wird, um eine Anweisung oder eine Reihe von Anweisungen wiederholt auszuführen, bis ein bestimmtes Kriterium nicht erfüllt ist.

Die for-Schleife ist die Schleifenstruktur, die insbesondere verwendet wird, wenn eine bestimmte Anweisung(en) oder eine Reihe von Befehlen eine bestimmte Anzahl von Malen ausgeführt werden müssen. Wir können auch die for-Schleife im Bash-Prompt und im Bash-Skript verwenden.

Das Bash-Skript bietet zwei Syntaxen zum Schreiben der for-Schleifen. Die erste ist als C-Stil oder Schleife mit drei Ausdrücken bekannt und ist fast identisch mit der C-Formulierung für die for-Schleife.

Die zweite Formulierung ist ein berühmtes Konstrukt im foreach- oder for-in-Stil, das auch von vielen populären Programmiersprachen wie PHP, Python, C#, C++11, Ruby und vielen anderen übernommen wurde.

Bash C-Style for-Schleifensyntax

Dieser Stil verwendet drei Ausdrücke wie C-Sprache, um die Anzahl der Schleifeniterationen anzugeben.

for (( initialization; condition; increment/decrement ))
do
	Shell command[s]
done

Beispiel: Angenommen, wir möchten ein Skript schreiben, das uns helfen kann, eine Tabelle mit einer vom Benutzer bereitgestellten Nummer zu drucken. Wir können das mit dem folgenden Code tun.

#!/bin/bash
echo "Enter a Number: "
read number

for ((j=1;j<=10;j++))
do  
   echo "$number X $j = $((number*j))"
done

Der obige Code nimmt eine Zahl vom Benutzer und druckt seine Tabelle bis 10. Angenommen, der Benutzer gibt 5 als Zahl ein, die Ausgabe des Programms lautet wie folgt:

Enter a Number:
5
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
5 X 10 = 50

Bash-Style-Syntax Foreach/For-in

Diese Art von for-Schleife erwartet eine Liste von Werten/Elementen und führt eine einzelne Iteration für jedes Element in der Liste durch. Die Liste kann bereitgestellt werden, indem jedes Element durch ein einzelnes Leerzeichen getrennt wird, oder Sie können einen Bereich angeben.

for Counter in 1 2 3 4 5 .. N
do
	1st statement
	2nd statement
	nth statement
done

Beispiel: Drucken Sie fünfmal Hello World.

#!/bin/bash
for c in 1 2 4 5 6 
do
   echo "$c Hello World"
done

Ausgabe:

1 Hello World
2 Hello World
4 Hello World
5 Hello World
6 Hello World

Bitte beachten Sie die fehlende 3. Diese Zahl wird übersehen, da die Schleife nur für die in der Liste angegebene Anzahl von Elementen iteriert. Daher wird der Variable c zuerst der Wert 1 zugewiesen und eine einfache Iteration durchgeführt.

Danach wird 2 c zugewiesen und die zweite Iteration durchgeführt. Später wird der unmittelbar nächste Wert in der Liste (d. h. 4) dem c zugewiesen, und der Prozess wird fortgesetzt, bis die gesamte Liste beendet ist.

Hinweis
Die Elemente in der obigen Liste können die Namen verschiedener Dateien sein. Darüber hinaus kann es aus einem Bash-Befehl oder einem Array anstelle von durch Leerzeichen getrennten Elementen resultieren.
for Item in File_0 File_1 File_N
do
	Some Operations on Item
done

ODER

for Item in $(Command)
do
	Some Operations on Item    
done

Wenn ein Befehl mit der for-Schleife verwendet wird, wird die Item-Variable nacheinander jedem der Ausgabe-Token zugewiesen. Das folgende Skript druckt beispielsweise alle Dateien oder Ordner, die mit f beginnen, im aktuellen Verzeichnis unter Verwendung der for-Schleife.

#!/bin/bash
for Item in $(ls f*)
do
   echo "$Item"
done

Definieren von Bereichen und Sprunggröße in der Bash for-Schleife

Wenn Sie wissen, dass zwischen einigen Start- und Endwerten keine Zahl fehlt. Auch wenn die Differenz zwischen den beiden aufeinanderfolgenden Werten, auch Sprungweite genannt, größer als 1 ist, können Sie die for-Schleife mit folgender Syntax verwenden.

for i in {Start_Value..End_Value..Jump_Size}
  do 
     Statement(s)
 done

Beispiel: Um alle geraden Zahlen zwischen 10 und 20 zu drucken, benötigen Sie Start_Value=10, End_Value=20 und Jump_Size=2.

#!/bin/bash
for evenNumber in {10..20..2}
  do 
     echo "$evenNumber"
 done

Ausgabe:

10
12
14
16
18
20

Erstellen der for-Schleife in der Bash-Eingabeaufforderung und Beheben des Problems mit dem Trennzeichen Semikolon ;

Der ; wird verwendet, um Befehle in einer einzelnen Zeile zu begrenzen oder zu beenden. Es gibt auch andere Trennzeichen wie &.

Allerdings, wenn die ; zum Beenden des Befehls verwendet wird, wird der nächste Befehl erst nach vollständiger Ausführung des vorherigen Befehls ausgeführt, auch synchrone Ausführung genannt.

Angenommen, Sie möchten eine for-Schleife in einer einzelnen Zeile in der Bash-Eingabeaufforderung schreiben, ohne das newline als Abschlusszeichen für die Anweisung zu verwenden, dann können Sie die folgende Syntax aus dem Bash-Referenzhandbuch verwenden.

for Item [ [in [List of Items] ] ; ] do commands; done

Beispiel: Der folgende Code entspricht unserem früheren Skript zum Drucken gerader Zahlen.

#!/bin/bash
for even in {10..20..2} ; do echo "$even";done
Hinweis
Bitte beachten Sie, dass die Befehle direkt nach dem Schlüsselwort do kommen. Fügen Sie daher ein ; nach dem do erzeugt einen Syntaxfehler.

Die Syntax für den Drei-Ausdruck oder die for-Schleife vom Typ C lautet wie folgt.

for (( Initilization ; Condition ; Increment/Decrement )) ; do commands ; done

Beispiel:

#!/bin/bash
for ((i=10;i<20;i=i+2));do echo "$i"; done
Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

Verwandter Artikel - Bash Loop