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

Bash für Schleifenbeispiele

In einem Shell-Skript kommt es oft vor, dass Sie eine Anweisung oder eine Gruppe von Anweisungen wiederholt ausführen möchten, bis eine bestimmte Bedingung eintritt. Außerdem möchten Sie möglicherweise eine Gruppe von Anweisungen für jedes Element in einer bestimmten Liste ausführen. Die Shell bietet drei Schleifenkonstrukte für diese Situationen:die for-, while- und until-Konstrukte.

Mit der for-Schleife können Sie eine Liste von Werten angeben. Für jeden Wert in der Liste wird eine Gruppe von Anweisungen ausgeführt.

For-Schleifen-Syntax

Die for-Schleife in der Shell nimmt eine Liste von Wörtern (Strings) als Argument. Die Anzahl der Wörter in der Liste bestimmt, wie oft die Anweisungen in der for-Schleife ausgeführt werden. Die Syntax für die for-Schleife lautet:

for variable in element1 element2 element3 
do
	commands 
done

wo:

  • Variable :Es ist ein beliebiger Variablenname.
  • Elemente (Argument_Liste) :Es kann eine beliebige Liste von Wörtern, Zeichenketten oder Zahlen sein, und es kann wörtlich oder durch Verwendung eines Shell-Befehls oder eines Shell-Befehlszeilen-Metazeichens generiert werden.
  • Befehle :Die Befehle können beliebige Betriebssystembefehle, ein Benutzerprogramm, ein Shell-Skript oder eine Shell-Anweisung sein, die eine Liste zurückgibt (erzeugt).

Der Wert der Variablen var wird beim ersten Schleifendurchlauf auf das erste Wort in der Liste gesetzt. Beim zweiten Schleifendurchlauf wird sein Wert auf das zweite Wort in der Liste gesetzt und so weiter. Die Schleife endet, wenn var der Reihe nach jeden der Werte aus der Argumentliste angenommen hat und es keine verbleibenden Argumente mehr gibt.

Die for-Schleifen-Argumentliste

Die Argumentliste in einer for-Schleife kann eine beliebige Liste von Wörtern sein , Saiten , oder Zahlen . Generieren Sie die Argumentliste mit einer der folgenden Methoden (oder einer Kombination von Methoden):

  • Verwenden Sie eine explizite Liste
  • Den Inhalt einer Variablen verwenden
  • Verwenden Sie Befehlszeilenargumente
  • Befehlsersetzung verwenden
  • Verwenden Sie Dateinamen bei der Befehlsersetzung

Beispiel 1:For-Schleife mit einer expliziten Liste zur Angabe von Argumenten

Wenn Argumente für eine for-Schleife aufgelistet werden, spricht man von einer expliziten Liste. Eine explizite Liste ist die einfachste Form einer Argumentliste. Die Schleife wird für jedes Listenelement einmal ausgeführt. Das folgende Beispiel ist eine for-Schleife, die eine explizite Liste von Elementen verwendet:

#!/bin/bash
for fruit in apple orange banana peach kiwi 
do
    echo "Value of fruit is: $fruit"
done

Die Ausgabe dieser for-Schleife ist:

Value of fruit is: apple 
Value of fruit is: orange 
Value of fruit is: banana 
Value of fruit is: peach 
Value of fruit is: kiwi

Beispiel 2:For-Schleife mit Variableninhalten zur Angabe von Argumenten

Wenn sich die Argumente in einer Variablen befinden und die Anweisung ausgeführt wird, werden die Variableninhalte ersetzt. Im folgenden Beispiel wird der an der Eingabeaufforderung eingegebene Text zum Wert der Variablen INPUT. Diese Variable repräsentiert die Argumentliste des for-Konstrukts. Daher wird der Text in INPUT basierend auf Leerzeichen in Wörter oder Token aufgeteilt.

$ cat ex1.sh 
#!/bin/bash
# Script name: ex1.sh
echo "Enter some text: \c" 
read INPUT
for var in $INPUT 
do
	echo "var contains: $var"
done
$ ./ex1.sh
Enter some text: I like the Bash shell. 
var contains: I
var contains: like
var contains: the
var contains: Korn
var contains: shell.

Beispiel 3:For-Schleife mit Befehlszeilenargumenten zur Angabe von Argumenten

Im folgenden Beispiel wird der in der Befehlszeile eingegebene Text zur Argumentliste des for-Konstrukts. Daher wird der Befehlszeilentext basierend auf Leerzeichen in Wörter oder Tokens aufgeteilt.

$ cat ex2.sh
#!/bin/bash
# Script name: ex2.sh
for var in $* 
do
	echo "command line contains: $var"
done
$ ./ex2.sh I am The Geek.
command line contains: I
command line contains: am
command line contains: The
command line contains: Geek.

Beispiel 4:For-Schleife mit Befehlsersetzung zur Angabe von Argumenten

Die Syntax für die Befehlsersetzung in einer Bash-Shell lautet:

for var in `cmd_sub`

Das folgende Beispiel verwendet die Ausgabe des cat-Befehls als Argumentliste.

$ cat fruit1 
apple 
orange 
banana 
peach
kiwi
$ cat ex4.sh 
#!/bin/bash
# Script name: ex4.sh
for var in `cat fruit2` 
do
	echo "var contains: $var"
done
$ ./ex4.sh
var contains: Apple 
var contains: Orange 
var contains: Banana 
var contains: Peach 
var contains: Kiwi

Wenn die Datei mit der Liste das folgende Format hatte, was ist das Ergebnis der for-Schleife.

$ cat fruit3
Apple Orange Banana Peach Kiwi
$ cat ex5.sh 
#!/bin/bash
# Script name: ex5.sh
for var in `cat fruit3` 
do
	echo "$var"
done
$ ./ex5.sh
Apple 
Orange 
Banana 
Peach 
Kiwi

Im obigen Beispiel ändern sich die Ergebnisse nicht. Die IFS-Variable ist ein beliebiges Leerzeichen, sodass jedes Feld in der Datei sowohl durch einen Wagenrücklauf als auch durch ein Leerzeichen oder einen Tabulator getrennt wird.

Beispiel 5:For-Schleife mit Dateinamen in Befehlsersetzung zur Angabe von Argumenten

Einige Befehle liefern Dateinamen und Verzeichnisnamen als Ausgabe. Im folgenden Beispiel ersetzt die Shell die Ausgabe des Befehls ls /etc/p*(/etc/passwd/etc/profileusw.) als Argumentliste für die for-Schleife.

$ cat ex7.sh 
#!/bin/bash
# Script name: ex7.sh
for var in `ls /etc/p*`
do
	print "var contains: $var"
done
# ./x.sh 
var contains: /etc/passwd
var contains: /etc/passwd-
var contains: /etc/printcap
var contains: /etc/profile
....
Beispiele für Bash-if-Schleifen (if then fi, if then elif fi, if then else fi)


Linux
  1. Linux-Scripting:3 Anleitungen für While-Schleifen in Bash

  2. Eine Bash-For-Schleife parallelisieren?

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

  4. Bleiben Sie auf dem Laufenden – Beispiele für Bash-For-, While- und Until-Loops

  5. 12 Bash-For-Loop-Beispiele für Ihr Linux-Shell-Scripting

35 Bash-Skriptbeispiele

Bash-Scripting – For-Schleife mit Beispielen erklärt

Bash For-Schleifen mit Beispielen

Bash For Loop – Die praktischste Anleitung

Die Bash FOR-Schleife erklärt und vereinfacht

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