GNU/Linux >> Tutoriels Linux >  >> Linux

Bash for loop Exemples

Il arrive souvent, dans un script shell, que vous souhaitiez exécuter de manière répétée une instruction ou un groupe d'instructions jusqu'à ce qu'une condition spécifiée se produise. En outre, vous souhaiterez peut-être exécuter un groupe d'instructions pour chaque élément d'une certaine liste. Le shell fournit trois constructions en boucle pour ces situations :les constructions for, while et until.

La boucle for vous permet de spécifier une liste de valeurs. Un groupe d'instructions est exécuté pour chaque valeur de la liste.

Syntaxe de la boucle For

La boucle for du shell prend une liste de mots (chaînes) comme argument. Le nombre de mots dans la liste détermine le nombre de fois que les instructions de la boucle for sont exécutées. La syntaxe de la boucle for est :

for variable in element1 element2 element3 
do
	commands 
done

où :

  • variable :Il s'agit de n'importe quel nom de variable.
  • éléments (argument_list)  :Il peut s'agir de n'importe quelle liste de mots, de chaînes ou de nombres, et il peut être littéral ou généré à l'aide d'une commande shell ou d'un métacaractère de ligne de commande shell.
  • commandes  :les commandes peuvent être n'importe quelles commandes du système d'exploitation, un programme utilisateur, un script shell ou une instruction shell qui renvoie (produit) une liste.

La valeur de la variable var est définie sur le premier mot de la liste la première fois dans la boucle. La deuxième fois dans la boucle, sa valeur est définie sur le deuxième mot de la liste, et ainsi de suite. La boucle se termine lorsque var a pris tour à tour chacune des valeurs de la liste d'arguments et qu'il ne reste aucun argument.

La liste des arguments de la boucle for

La liste d'arguments dans une boucle for peut être n'importe quelle liste de mots , chaînes , ou chiffres . Générez la liste d'arguments à l'aide de l'une des méthodes suivantes (ou d'une combinaison de méthodes) :

  • Utilisez une liste explicite
  • Utiliser le contenu d'une variable
  • Utiliser des arguments de ligne de commande
  • Utiliser la substitution de commande
  • Utiliser des noms de fichiers dans la substitution de commande

Exemple 1 :boucle For utilisant une liste explicite pour spécifier des arguments

Lorsque des arguments sont listés pour une boucle for, ils sont appelés une liste explicite. Une liste explicite est la forme la plus simple d'une liste d'arguments. La boucle est exécutée une fois pour chaque élément de la liste. L'exemple suivant est une boucle for utilisant une liste explicite d'éléments :

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

La sortie de cette boucle for est :

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

Exemple 2 :boucle For utilisant un contenu variable pour spécifier des arguments

Lorsque les arguments sont dans une variable et que l'instruction est exécutée, le contenu de la variable est remplacé. Dans l'exemple suivant, le texte saisi à l'invite devient la valeur de la variable INPUT. Cette variable représente la liste d'arguments de la construction for. Par conséquent, le texte dans INPUT est divisé en mots ou en jetons basés sur des espaces blancs.

$ 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.

Exemple 3 :boucle For utilisant des arguments de ligne de commande pour spécifier des arguments

Dans l'exemple suivant, le texte saisi sur la ligne de commande devient la liste d'arguments de la construction for. Par conséquent, le texte de la ligne de commande est divisé en mots ou en jetons basés sur des espaces blancs.

$ 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.

Exemple 4 :boucle For utilisant la substitution de commande pour spécifier des arguments

La syntaxe de substitution de commande dans un shell Bash est :

for var in `cmd_sub`

L'exemple suivant utilise la sortie de la commande cat comme liste d'arguments.

$ 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

Si le fichier contenant la liste était au format suivant, quel est le résultat de la boucle for.

$ 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

Dans l'exemple ci-dessus, les résultats ne changent pas. La variable IFS est un espace blanc, donc un retour chariot et un espace ou une tabulation séparent chaque champ du fichier.

Exemple 5 :boucle For utilisant des noms de fichiers dans la substitution de commande pour spécifier des arguments

Certaines commandes fournissent des noms de fichiers et des noms de répertoires en sortie. Dans l'exemple suivant, le shell remplace la sortie de la commande, ls /etc/p*(/etc/passwd/etc/profile, etc.), comme liste d'arguments pour la boucle for.

$ 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
....
Bash if exemples de boucle (if then fi, if then elif fi, if then else fi)


Linux
  1. Comment écrire une boucle dans Bash

  2. Bash For Loop Guide et exemples

  3. Script Linux :3 tutoriels pour les boucles while dans Bash

  4. Exemples de boucle Bash For et de boucle While

  5. Boucle for imbriquée

35 exemples de scripts bash

Bash Scripting - Boucle For expliquée avec des exemples

Bash For Loops avec des exemples

Bash For Loop – Le guide le plus pratique

La boucle Bash FOR expliquée et simplifiée

Script bash pour la boucle expliqué avec des exemples