Bash (Bourne Again Shell) ist eine Shell-Eingabeaufforderung und Skriptsprache in GNU/Linux-Betriebssystemen. Es ist die Standard-Shell für die meisten Linux-Distributionen.
Wie die meisten Skriptsprachen bietet Bash Schleifensyntaxen, um ähnliche Aufgaben mehrmals zu wiederholen. In diesem Artikel erfahren Sie, wie Sie die Pro
Schleife in Bash.
Einführung
Ein typisches Bash-Skript enthält eine Reihe von Befehlen, die nacheinander ausgeführt werden. Variablen können verwendet werden, um Strings, ganzzahlige Indexwerte, Ergebnisse eines Befehls usw. zu speichern. Schleifen sind erforderlich, wenn der Benutzer einen bestimmten Befehl mehrmals ausführen möchte. Dies ist insbesondere dann von Nutzen, wenn die Ausgabe eines Befehls in Form einer Liste erfolgt und bei jedem Ergebnis in der Liste ein zweiter Befehl ausgeführt werden soll.
Allgemeine Syntax
Die allgemeine Syntax für Pro
Schleife in Bash ist:
für in do ... ... fertig
Hier die ist eine Bash-Variable, die ein gültiger Linux-Shell-Variablenname sein muss, dh der Name enthält eine Kombination aus Buchstaben (az, AZ), Zahlen (0-9) und Unterstrich ( _ ) und muss entweder mit einem Buchstaben oder beginnen eine Unterstreichung.
Der ist entweder ein benutzerdefinierter Bereich von Integer-Indizes, die in einer Schleife ausgeführt werden, oder eine benutzerdefinierte Liste von Integern oder Strings. Es kann auch einen anderen Linux-Befehl enthalten, jedoch muss die Ausgabe eines solchen Befehls durch Leerzeichen oder Zeilenumbrüche getrennt sein, dh von Bash in eine Liste geparst werden (Eine Liste in Bash ist im Grunde eine Sammlung von Werten, die durch ein Leerzeichen oder einen Zeilenumbruch getrennt sind ).
Welcher Befehl oder welche Befehle ausgeführt werden sollen, muss innerhalb des tun getan
Block.
Sehen wir uns ein paar einfache Beispiele an.
Schleifen in einem Bereich von Integer-Werten: Der folgende Code erstellt Verzeichnisse mit den Namen dir1, dir2, dir3 bis dir10.
for i in {1..10} do mkdir dir$i done
Schleifen einer Liste fester Werte: Der folgende Code gibt jede Zeichenfolge oder Ganzzahl in der angegebenen festen Liste aus.
für i in Hallo 1 2 3 Tschüss! mach echo $ich fertig
Schleifen bei Ausgabe eines Befehls: Der folgende Code durchläuft die Ausgabe von ls
und gibt den Namen jeder Datei im angegebenen Format aus.
for i in `ls` echo "Dateiname ist $i" done
Ausdrucksbasierte Syntax
Eine ausdrucksbasierte Syntax ähnlich der Programmiersprache C ist auch in Bash möglich:
for ((Ausdruck 1; Ausdruck 2; Ausdruck 3)) do ... ... fertig
Hier, Ausdruck 1
ist die Initialisierung der Indexvariable(n). Ausdruck 2
ist die Bedingung, wenn die Schleife verlassen werden muss; diese Bedingung wird in jeder Iteration überprüft. Ausdruck 3
gibt das Inkrement/Dekrement/Änderung des Wertes der Indexvariable(n) an
Das folgende Beispiel druckt einfach Werte von 0 bis 4:
for ((i=0;i<5;i++)) do echo $i done
Das folgende Beispiel erstellt eine Endlosschleife, da keine Ausdrücke angegeben werden:
for (( ; ; )) do echo "Drücken Sie Strg-C zum Stoppen" done
Pause und weiter
Break-Anweisung für bedingten Exit
Wir können auch die bedingte Anweisung verwenden wenn
innerhalb der Schleife. Der wenn
Anweisung kann mit a . verwendet werden brechen
-Anweisung für ein bedingtes Verlassen der Schleife.
for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]] then break else echo $i; fi fertig
Die obige Schleife gibt Zahlen von 0 bis 4 aus. Wenn der Wert von i 5 ist, bricht sie aus der Schleife aus. Dies ist insbesondere dann von Nutzen, wenn eine Schleife verlassen werden soll, wenn ein Befehl eine bestimmte Ausgabe liefert. Die folgende Schleife wird beispielsweise unterbrochen, wenn eine leere Datei gefunden wird.
for file in `ls` do flen=`wc -c $file` if [[ "$flen" = "0 $file" ]] then echo "$file is empty" break else echo $flen fi done
Der Befehl wc -c
druckt die Anzahl der Zeilen in der Datei . Es druckt es im Format
, zum Beispiel,
10 test.txt
. Wir brechen aus der Schleife aus, wenn die Anzahl der Zeilen 0 beträgt, d. h. eine leere Datei.
Anweisung fortsetzen, um eine Iteration bedingt zu überspringen
Ähnlich wie C und viele andere Programmiersprachen hat auch bash ein Fortfahren
-Anweisung, um den verbleibenden Teil einer Iteration in einer Schleife zu überspringen, wenn eine bestimmte Bedingung erfüllt ist.
for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]] dann weiter fi echo $i; fertig
Die obige Schleife gibt Zahlen von 0 bis 10 aus, außer 5, da während der Iteration von i=5
es gibt eine Continue-Anweisung, die den Rest des Codes in der Schleife am Anfang mit der Iteration von . überspringt i=6
.
Im folgenden Beispiel geben wir die Anzahl der Zeilen in einer Datei aus, und eine bestimmte Iteration wird Fortfahren
wenn es ein Verzeichnis und keine Datei ist.
for file in `ls` do if [[ -d $file ]] dann weiter fi wc -c "$file" done
[[ -d $datei ]]
prüft, ob die Datei ein Verzeichnis ist. Wenn dies der Fall ist, springen wir zur nächsten Datei, d. h. zur nächsten Iteration. Wenn es sich nicht um ein Verzeichnis handelt, drucken wir die Anzahl der Zeilen in der Datei mit Toilette
Befehl, wie auch zuvor gezeigt.
Schleifen verwenden: Skripte und Befehlszeile
Die Schleifensyntax kann direkt in der Bash-Shell oder aus einer Shell-Skriptdatei verwendet werden. Einmal Pro
Loop-Syntax auf der Shell eingegeben wird, setzt die Shell die Eingabeaufforderung fort, damit der Benutzer die zu wiederholenden Befehle fortsetzen kann.
Oder der Benutzer kann dies in einer Skriptdatei speichern und die Skriptdatei ausführen.
Der #!/bin/bash
at the start gibt den Interpreter an, der bei der Ausführung der Datei verwendet werden soll. Obwohl Bash heutzutage die am häufigsten verwendete Shell ist, bevorzugen einige Benutzer Shells wie zsh
, die anstelle von bash am Anfang dieser Datei angegeben werden sollte.
Ausführungsberechtigungen erteilen Führen Sie für diese Datei Folgendes aus:
chmod +x test.sh
Endlich, die Datei ausführen, Lauf:
./test.sh
Fazit
Der Pro
loop in Bash ist eine ziemlich einfache Funktion, die jedoch in fast allen komplexen Skriptszenarien verwendet wird. Das Erlernen ist ein langer Weg, egal ob Sie ein regelmäßiger oder fortgeschrittener Linux-Benutzer sind oder beginnen, Automatisierung für Systemadministrations- und DevOps-Aufgaben zu erlernen.