for-Schleife in Bash

Fumbani Banda 30 Januar 2023
  1. Die for-Schleife in Bash
  2. Beispiele für die Verwendung der for-Schleife in Bash
  3. Bedingter Ausgang Mit einem break in der for-Schleife in Bash
  4. Befehlsersetzung mit for-Schleife
for-Schleife in Bash

Dieses Tutorial erklärt die Verwendung der for-Schleife in Bash-Skripten unter Verwendung der Bereichsnotation und der Drei-Ausdrucks-Notation wie in der Programmiersprache C.

Die for-Schleife in Bash

Die for-Schleife ist eine Bash-Anweisung, mit der Befehle wiederholt ausgeführt werden. Die for-Schleife in Bash verwendet zwei Hauptnotationen. Die beiden Notationen sind unten gezeigt.

Die erste Notation verwendet die for-Schleife mit einem definierten Bereich. In der folgenden Syntax ist der Endpunkt des Bereichs n. Das bedeutet, dass die for-Schleife die darin enthaltenen Befehle n Mal ausführt, bevor sie stoppt.

for variable in 1 2 3 ... n
do
    command1
    command2
done

Die zweite Notation verwendet die for-Schleife mit einem Drei-Ausdruck wie in der Programmiersprache C. exp1 ist die Initialisierung, exp2 ist die Bedingung und exp3 ist das Inkrement.

for ((exp1; exp2; exp3))
do 
    command1 
    command2 
done

Beispiele für die Verwendung der for-Schleife in Bash

Die folgenden Skripte demonstrieren die Verwendung der for-Schleife in Bash-Skripten.

Dieses Skript setzt den Wert der Variable i beim ersten Mal auf 1 und gibt line number 1 aus. Dann geht es zurück zur for-Schleife, setzt die Variable i auf 2 und gibt line number 2 aus.

Das Skript tut dies wiederholt und ändert den Wert von i, bis es die letzte Zahl, 5, erreicht. Sobald es line number 5 druckt, wird die for-Schleife automatisch beendet.

#!/bin/bash
for i in 1 2 3 4 5
do
    printf "line number $i"
    printf "\n"
done

Wenn Sie das obige Skript ausführen, wird die folgende Ausgabe auf der Standardausgabe ausgegeben.

line number 1
line number 2
line number 3
line number 4
line number 5

Das folgende Skript verwendet die geschweiften Klammern, um einen Bereich zu definieren, den die for-Schleife durchlaufen soll. Die Zahlen in den geschweiften Klammern werden fortlaufend erhöht.

Beim ersten Mal wird der Wert von i auf 1 gesetzt. Das Skript führt dann die beiden printf-Befehle innerhalb der for-Schleife aus. Der Wert von i wird um 1 erhöht, er wird zu 2, und die printf-Befehle innerhalb der for-Schleife werden ausgeführt.

Der Wert von i wird immer wieder erhöht, bis er schliesslich 5 wird, und nach Ausführung der beiden printf-Befehle beendet sich die for-Schleife automatisch.

!/bin/bash
for i in {1..5}
do
    printf "Hello World $i"
    printf "\n"
done

Das Folgende ist die Ausgabe, die nach dem Ausführen des Skripts ausgedruckt wird.

Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5

Unten verwendet das Skript die Notation mit drei Ausdrücken wie in der Programmiersprache C. Im ersten Ausdruck wird x mit 0 initialisiert. Der zweite Ausdruck hat den bedingten Test, der prüft, ob x kleiner oder gleich dem Wert der max-Variablen ist.

Der Wert der Variable max wurde auf 5 gesetzt. Der letzte Ausdruck erhöht den Wert von x um 1.

Beim ersten Mal ist der Wert von x 0 und die Bedingung gibt wahr zurück, weil 0 kleiner oder gleich 5 ist. Die for-Schleife gibt dann number: 0 an das Terminal aus, und der Wert von x wird um 1 erhöht. Aus x wird nun 1.

1 wird auch getestet, wenn es kleiner oder gleich 5 ist, es gibt wahr zurück und die for-Schleife gibt number: 1 aus. Dieser Vorgang wiederholt sich, bis die Bedingung falsch zurückgibt und die for-Schleife beendet wird.

#!/bin/bash
max=5
printf "Print Numbers from 0 to $max\n"
for ((x=0;x<=max;x++)); do
    printf "number: $x\n"
done

Unten sehen Sie die Ausgabe, die nach dem Ausführen des Skripts an das Terminal ausgegeben wird.

Print Numbers from 0 to 5
number: 0
number: 1
number: 2
number: 3
number: 4
number: 5

Bedingter Ausgang Mit einem break in der for-Schleife in Bash

Das folgende Skript demonstriert das Verlassen einer for-Schleife mit dem Schlüsselwort break. Die for-Schleife wird so eingestellt, dass sie wiederholt wird, wenn der Wert der x-Variable kleiner oder gleich dem Wert der max-Variable ist. Es gibt jedoch einen test-Befehl innerhalb der for-Schleife.

Der Befehl test prüft, ob der Wert der Variable x gleich 3 ist; Wenn dieser Test wahr zurückgibt, trifft das Skript auf das Schlüsselwort break und die for-Schleife wird beendet.

#!/bin/bash
max=5
printf "Print Numbers from 0 to $max\n"
printf "Program will exit when we hit 3\n"

for ((x=0;x<=max;x++)); do
    printf "number: $x\n"
    if [ $x  -eq  3 ]
    then
        break
    fi
done

Das Folgende ist die Ausgabe, die im Standardterminal angezeigt wird, wenn das Skript ausgeführt wird. Die for-Schleife existiert, wenn der Wert von x gleich 3 ist, da der Befehl test innerhalb der for-Schleife den arithmetischen Ausdruck auswertet, wenn der Wert der Variable x auf 3 gesetzt ist , und es wird wahr zurückgegeben. Dann trifft das Skript auf das Schlüsselwort break innerhalb der if-Anweisung und wird beendet.

Print Numbers from 0 to 5
Program will exit when we hit 3
number: 0
number: 1
number: 2
number: 3

Befehlsersetzung mit for-Schleife

Das folgende Skript zeigt die Verwendung der for-Schleife mit Befehlsersetzung. Befehlsersetzung ist eine Bash-Funktion, die es uns ermöglicht, Linux-Befehle auszuführen und die Ausgabe des Befehls in einer Bash-Variablen zu speichern. Sobald ein Befehl mit dieser Funktion ausgeführt wird, ersetzt die Standardausgabe des Befehls den Befehl.

Im Skript wird der Befehl cat mittels Befehlssubstitution ausgeführt. Die Ausgabe von cat file1.txt ersetzt den Befehl, und die for-Schleife iteriert durch die Ausgabe des Befehls und gibt sie mit dem Befehl printf auf der Standardausgabe aus.

#!/bin/bash
printf "Program prints the lines of a file\n\n"

for line in $(cat file1.txt)
do
     printf "$line"
     printf "\n"
done

Das Skript erzeugt bei der Ausführung die folgende Ausgabe. Die Datei file1.txt enthält eine Liste von drei Sprachen, die auf dem Standardterminal ausgedruckt werden.

Program prints the lines of a file

French
English
Spanish
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Verwandter Artikel - Bash Loop