GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-Skript für Schleife mit Beispielen erklärt

Einführung

Der for Schleife ist eine wesentliche Programmierfunktionalität, die eine Liste von Elementen durchläuft. Für jedes dieser Elemente wird for Schleife führt eine Reihe von Befehlen aus. Der Befehl hilft dabei, Prozesse bis zu einer Abbruchbedingung zu wiederholen.

Egal, ob Sie eine Reihe von Zahlen durchgehen oder Dateien umbenennen, for Schleifen in Bash-Skripten bieten eine bequeme Möglichkeit, Elemente automatisch aufzulisten.

Dieses Tutorial zeigt, wie man Bash for verwendet Schleifen in Skripten.

Voraussetzungen

  • Zugriff auf das Terminal/Befehlszeile (CTRL +ALT +T ).
  • Ein Texteditor wie Nano oder Vi/Vim.
  • Grundlegende Programmierterminologie.

Bash-Skript für Schleife

Verwenden Sie die for Schleife, um eine Liste von Elementen zu durchlaufen, um die angewiesenen Befehle auszuführen.

Die grundlegende Syntax für for Schleife in Bash-Skripten ist:

for <element> in <list>
do
	<commands>
done

Das Element, die Liste und die Befehle, die durch die Schleife geparst werden, variieren je nach Anwendungsfall.

Beispiele für Bash-For-Schleifen

Nachfolgend finden Sie verschiedene Beispiele für for Schleife in Bash-Skripten. Erstellen Sie ein Skript, fügen Sie den Code hinzu und führen Sie die Bash-Skripte vom Terminal aus, um die Ergebnisse anzuzeigen.

Einzelne Artikel

Durchlaufen Sie eine Reihe gegebener Elemente und geben Sie jedes mit der folgenden Syntax aus:

#!/bin/bash
# For loop with individual numbers
for i in 0 1 2 3 4 5
do
   echo "Element $i"
done

Führen Sie das Skript aus, um die Ausgabe anzuzeigen:

. <script name>

Das Skript gibt jedes Element aus der bereitgestellten Liste an die Konsole aus.

Alternativ können Sie Zeichenfolgen in einer durch Leerzeichen getrennten Liste verwenden:

#!/bin/bash
# For loop with individual strings
for i in "zero" "one" "two" "three" "four" "five"
do
   echo "Element $i"
done

Speichern Sie das Skript und führen Sie es vom Terminal aus aus, um das Ergebnis anzuzeigen.

Die Ausgabe gibt jedes Element an die Konsole aus und verlässt die Schleife.

Bereich

Anstatt eine Liste einzelner Elemente zu schreiben, verwenden Sie die Bereichssyntax und geben Sie das erste und letzte Element an:

#!/bin/bash
# For loop with number range
for i in {0..5}
do
        echo "Element $i"
done

Das Skript gibt alle Elemente aus dem bereitgestellten Bereich aus.

Die Bereichssyntax funktioniert auch für Buchstaben. Zum Beispiel:

#!/bin/bash
# For loop with letter range
for i in {a..f}
do
        echo "Element $i"
done

Das Skript gibt Buchstaben in aufsteigender Reihenfolge im angegebenen Bereich an die Konsole aus.

Die Bereichssyntax funktioniert für Elemente in absteigender Reihenfolge, wenn das Startelement größer als das Ende ist.

Zum Beispiel:

#!/bin/bash
# For loop with reverse number range
for i in {5..0}
do
        echo "Element $i"
done

Die Ausgabe listet die Nummern in umgekehrter Reihenfolge auf.

Die Bereichssyntax funktioniert unabhängig davon, ob Elemente zunehmen oder abnehmen.

Bereich mit Inkrement

Verwenden Sie die Bereichssyntax und fügen Sie den Schrittwert hinzu, um den Bereich in Intervallen zu durchlaufen.

Verwenden Sie beispielsweise den folgenden Code, um gerade Zahlen aufzulisten:

#!/bin/bash
# For loop with range increment numbers
for i in {0..10..2}
do
        echo "Element $i"
done

Die Ausgabe gibt jede zweite Ziffer aus dem angegebenen Bereich aus.

Alternativ können Sie in geraden Zahlen von zehn bis null rückwärts zählen:

#!/bin/bash
# For loop with reverse range increment numbers
for i in {10..0..2}
do
        echo "Element $i"
done

Führen Sie das Skript aus, um jedes andere Element aus dem Bereich in absteigender Reihenfolge zu drucken.

Tauschen Sie das Inkrement 2 aus für jede Zahl kleiner als der Abstand zwischen den Bereichen, um Werte für verschiedene Intervalle zu erhalten.

Der seq-Befehl

Die seq Befehl generiert eine Zahlenfolge. Analysieren Sie die Sequenz im Bash-Skript for Schleife als Befehl zum Generieren einer Liste.

Zum Beispiel:

#!/bin/bash
# For loop with seq command
for i in $(seq 0 2 10)
do
   echo "Element $i"
done

Die Ausgabe gibt jedes von seq generierte Element aus Befehl.

Die seq Der Befehl ist ein historischer Befehl und keine empfohlene Methode zum Generieren einer Sequenz. Die integrierten Methoden mit geschweiften Klammern sind vorzuziehen und schneller.

C-Stil

Bash-Skripte erlauben im C-Stil drei Parameter for Schleifensteuerungsausdrücke. Fügen Sie den Ausdruck zwischen doppelten Klammern wie folgt hinzu:

#!/bin/bash
# For loop C-style
for (( i=0; i<=5; i++ ))
do
   echo "Element $i"
done

Der Ausdruck besteht aus:

  • Der Initialisierer (i=0 ) bestimmt die Zahl, bei der die Schleife zu zählen beginnt.
  • Stoppbedingung (i<=5 ) gibt an, wann die Schleife beendet wird.
  • Schritt (i++ ) erhöht den Wert von i bis zur Stoppbedingung.

Trennen Sie jede Bedingung durch ein Semikolon (; ). Passen Sie die drei Werte nach Bedarf für Ihren Anwendungsfall an.

Das Terminal gibt jedes Element aus, beginnend mit dem Initialisierungswert.

Der Wert erhöht sich um den Schrittbetrag bis zur Stoppbedingung.

Endlosschleifen

Unendlich for Schleifen haben keine Bedingung, um die Schleife zu beenden. Das Programm läuft endlos, weil die Endbedingung nicht existiert oder nie erfüllt wird.

Zum Generieren eines unendlichen for loop, fügen Sie den folgenden Code zu einem Bash-Skript hinzu:

#!/bin/bash
# Infinite for loop
for (( ; ; ))
do
      echo "CTRL+C to exit"
done

Um die Ausführung des Skripts zu beenden, drücken Sie STRG +C .

Endlosschleifen sind hilfreich, wenn ein Programm läuft, bis eine bestimmte Bedingung erfüllt ist.

Pause

Die break-Anweisung beendet die aktuelle Schleife und hilft beim Beenden von for Schleife früh. Dieses Verhalten ermöglicht das Verlassen der Schleife, bevor eine angegebene Bedingung erfüllt wird.

Fügen Sie zur Demonstration den folgenden Code zu einem Bash-Skript hinzu:

#!/bin/bash
# Infinite for loop with break
i=0
for (( ; ; ))
do
        echo "Iteration: ${i}"
        (( i++ ))
        if [[ i -gt 10 ]]
        then
                break;
        fi
done
echo "Done!"

Das Beispiel zeigt, wie man ein unendliches for beendet Schleife mit einem break . Die if-Anweisung von Bash hilft bei der Überprüfung des Werts für jede Ganzzahl und stellt den break bereit Bedingung. Dies beendet das Skript, wenn eine ganze Zahl den Wert zehn erreicht.

Um eine verschachtelte Schleife und eine äußere Schleife zu verlassen, verwenden Sie break 2 .

Weiter

Die continue Befehl beendet die Iteration der aktuellen Schleife. Das Programm setzt die Schleife fort, beginnend mit der folgenden Iteration. Fügen Sie zur Veranschaulichung den folgenden Code zu einem Bash-Skript hinzu, um zu sehen, wie der continue -Anweisung funktioniert in einem for Schleife:

#!/bin/bash
# For loop with continue statement
for i in {1..100}
do
        if [[ $i%11 -ne 0 ]]
        then
                continue
        fi
        echo $i
done

Der Code prüft Zahlen zwischen eins und hundert und gibt nur Zahlen aus, die durch elf teilbar sind.

Die Bedingung if -Anweisung prüft auf Teilbarkeit, während die continue Anweisung überspringt alle Zahlen, die einen Rest haben, wenn sie durch elf geteilt werden.

Arrays

Arrays speichern eine Liste von Elementen. Der for loop bietet eine Methode, um Arrays nach Elementen zu durchlaufen.

Definieren Sie beispielsweise ein Array und durchlaufen Sie die Elemente mit:

#!/bin/bash
# For loop with array
array=(1 2 3 4 5)
for i in ${array[@]}
do
        echo "Element $i"
done

Die Ausgabe gibt jedes im Array gespeicherte Element vom ersten bis zum letzten aus.

Die Bash for Schleife ist die einzige Methode, um einzelne Array-Elemente zu durchlaufen.

Indizes

Beim Arbeiten mit Arrays hat jedes Element einen Index.

Listen Sie die Indizes eines Arrays mit dem folgenden Code auf:

#!/bin/bash
# For loop with array indices
array=(1 2 3 4 5)
for i in ${!array[@]}
do
        echo "Array indices $i"
done

Die Elementindizierung beginnt bei Null. Daher hat das erste Element einen Index Null.

Die Ausgabe gibt Zahlen von null bis vier für ein Array mit fünf Elementen aus.

Verschachtelte Schleifen

Um mehrdimensionale Arrays zu durchlaufen oder zu generieren, verwenden Sie verschachteltes for Schleifen.

Generieren Sie beispielsweise Dezimalwerte von null bis drei mithilfe von verschachtelten Schleifen:

#!/bin/bash
# Nested for loop
for (( i = 0; i <= 2; i++ ))
do
    for (( j = 0 ; j <= 9; j++ ))
    do
            echo -n " $i.$j "
    done
  echo "" 
done

Der Code macht Folgendes:

  • Zeile 1 startet den for Schleife bei Null, inkrementiert um eins und endet bei zwei, einschließlich.
  • Zeile 3 startet den verschachtelten for Schleife bei Null. Der Wert wird um eins erhöht und endet bei neun (einschließlich).
  • Zeile 5 druckt die Werte aus for Schleifen. Das verschachtelte for durchläuft alle Zahlen dreimal, einmal für jeden Wert der äußeren Schleife.

Die Ausgabe gibt jede Zahlenkombination auf der Konsole aus und fügt eine neue Zeile ein, wenn r Schleife beendet eine Iteration.

Strings

Um Wörter in einer Zeichenfolge zu durchlaufen, speichern Sie die Zeichenfolge in einer Variablen. Analysieren Sie dann die Variable zu einem for Schleife als Liste.

Zum Beispiel:

#!/bin/bash
# For loop with string
strings="I am a string"
for i in ${strings}
do
        echo "String $i"
done

Die Schleife durchläuft den String, wobei jedes Wort ein separates Element ist.

Die Ausgabe gibt einzelne Wörter aus dem String an die Konsole aus.

Dateien

Der for -Schleife in Kombination mit Näherungssuchen hilft beim Auflisten oder Ändern von Dateien, die eine bestimmte Bedingung erfüllen.

Listen Sie beispielsweise alle Bash-Skripte im aktuellen Verzeichnis mit einem for auf Schleife:

#!/bin/bash
# For loop with files
for f in *.sh
do
        echo $f
done

Das Skript durchsucht das aktuelle Verzeichnis und listet alle Dateien mit der Endung .sh auf Erweiterung.

Durchlaufen Sie Dateien oder Verzeichnisse, um Berechtigungen für mehrere Elemente gleichzeitig automatisch umzubenennen oder zu ändern.

Befehlsersetzung

Der for Schleife akzeptiert die Befehlsersetzung als eine Liste von Elementen, die durchlaufen werden müssen.

Das nächste Beispiel zeigt, wie ein for geschrieben wird Schleife mit Befehlsersetzung:

#!/bin/bash
# For loop with command substitution
list=`cat list.txt`
# Alternatively, use list=$(cat list.txt)
for i in $list
do
        echo $i
done

Der Bash-Kommentar bietet eine alternative Syntax für die Befehlsersetzung. Der Code liest den Inhalt der list.txt Datei mit dem cat Befehl und speichert die Informationen in einer Variablen list .

Verwenden Sie die Befehlsersetzungsmethode, um Dateien aus einer Liste von Namen umzubenennen, die in einer Textdatei gespeichert sind.

Hinweis: Erfahren Sie, wie Sie den cat-Befehl und die for-Schleife verwenden, um Dateien Zeile für Zeile in Bash zu lesen.

Befehlszeilenargumente

Verwenden Sie den for Schleife, um Befehlszeilenargumente zu durchlaufen.

Der folgende Beispielcode zeigt, wie Befehlszeilenargumente in einem for gelesen werden Schleife:

#!/bin/bash
# For loop expecting command line arguments
for i in [email protected]
do
    echo "$i"
done

Geben Sie die Befehlszeilenargumente an, wenn Sie das Bash-Skript ausführen.

Zum Beispiel:

. <script name> foo bar

Der [email protected] ersetzt jedes Befehlszeilenargument durch for Schleife.

Fazit

Nachdem Sie dieses Tutorial befolgt haben, wissen Sie, wie Sie for verwenden Schleife in Bash-Skripten, um Listen zu durchlaufen.

Als Nächstes erfahren Sie, wie Sie Bash-Funktionen schreiben und verwenden.


Linux
  1. So schreiben Sie ein Bash-Skript mit Beispielen

  2. Bash For Loop Guide und Beispiele

  3. Linux-Unexpand-Befehl für Anfänger erklärt (mit Beispielen)

  4. Beispiele für Bash-For- und While-Schleifen

  5. Bash für Schleifenbeispiele

Bash Scripting – Funktionen mit Beispielen erklärt

Bash-Scripting – Variablen mit Beispielen erklärt

Bash-Scripting – Printf-Befehl mit Beispielen erklärt

Bash-Scripting – Assoziatives Array mit Beispielen erklärt

Bash For-Schleifen mit Beispielen

Die Bash FOR-Schleife erklärt und vereinfacht