Bash 'For' Loop: Tutoriel et exemples

Bash (Bourne Again Shell) est une invite de commande shell et un langage de script dans les systèmes d'exploitation GNU/Linux. C'est le shell par défaut pour la plupart des distributions Linux.

Comme la plupart des langages de script, Bash fournit des syntaxes en boucle pour répéter plusieurs fois des tâches similaires. Dans cet article, nous allons apprendre à utiliser le pour boucle dans Bash.

introduction

Un script Bash typique contient une série de commandes à exécuter les unes après les autres. Les variables peuvent être utilisées pour stocker des chaînes, des valeurs d'index entiers, les résultats d'une commande, etc. Des boucles sont nécessaires lorsque l'utilisateur souhaite exécuter une commande particulière plusieurs fois. Elle est particulièrement utile lorsque la sortie d'une commande se présente sous la forme d'une liste, et sur chaque résultat, dans la liste, une deuxième commande doit être exécutée.

Syntaxe générale

La syntaxe générale pour pour boucle dans Bash est :

pour en faire ... ... fait

Ici le est une variable Bash, qui doit être un nom de variable shell Linux valide, c'est-à-dire que le nom contient une combinaison de lettres (az, AZ), de chiffres (0-9) et d'un trait de soulignement ( _ ) et il doit commencer par une lettre ou un trait de soulignement.

le est soit une plage personnalisée d'indices d'entiers qui seront bouclés, soit une liste personnalisée d'entiers ou de chaînes. Il peut également contenir une autre commande Linux, cependant, la sortie d'une telle commande doit être séparée par des espaces ou des caractères de nouvelle ligne, c'est-à-dire qu'elle peut être analysée par Bash dans une liste (une liste dans Bash est essentiellement une collection de valeurs séparées par un espace ou une nouvelle ligne ).

La ou les commandes à exécuter doivent être placées à l'intérieur du Faire bloquer.

Voyons quelques exemples simples.

Boucle sur une plage de valeurs entières: Le code suivant crée des répertoires nommés dir1, dir2, dir3 jusqu'à dir10.

for i in {1..10} do mkdir dir$i done

Boucle sur une liste de valeurs fixes : Le code suivant imprime chaque chaîne ou entier dans la liste fixe donnée.

pour moi dans Bonjour 1 2 3 Bye! faire écho $i fait

Boucle à la sortie d'une commande : Le code suivant boucle sur la sortie de ls et imprime le nom de chaque fichier dans le format donné.

pour i dans `ls` faire echo "Le nom de fichier est $i" fait

Syntaxe basée sur les expressions

Une syntaxe basée sur des expressions similaire au langage de programmation C est également possible dans Bash :

for ((Expression 1; Expression 2; Expression 3)) do ... ... done

Ici, Expression 1 est l'initialisation de la ou des variables d'index. Expression 2 est la condition à laquelle la boucle doit être terminée ; cette condition est vérifiée à chaque itération. Expression 3 précise l'incrément/décrément/modification en valeur de la ou des variable(s) d'index

L'exemple suivant imprime simplement les valeurs de 0 à 4:

for ((i=0;i<5;i++)) do echo $i done

L'exemple suivant crée une boucle infinie, car aucune expression n'est spécifiée :

for (( ; ; )) do echo "Appuyez sur Ctrl-C pour arrêter" done

Pause et continue

Instruction Break pour la sortie conditionnelle

On peut aussi utiliser l'instruction conditionnelle si à l'intérieur de la boucle. le si l'instruction peut être utilisée avec un Pause instruction, pour une sortie conditionnelle de la boucle.

for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]] then break else echo $i; fi fait

La boucle ci-dessus imprimera des nombres de 0 à 4. Ensuite, lorsque la valeur de i est 5, elle sortira de la boucle. Ceci est particulièrement utile lorsqu'une boucle doit être terminée lorsqu'une commande donne une sortie spécifique. Par exemple, la boucle suivante s'interrompt si et quand elle trouve un fichier vide.

for file in `ls` do flen=`wc -c $file` if [[ "$flen" = "0 $file" ]] then echo "$file is empty" break else echo $flen fi done 

La commande wc -c imprime le nombre de lignes dans le fichier . Il l'imprime au format , par example, 10 test.txt. Nous sortons de la boucle lorsque le nombre de lignes est égal à 0, c'est-à-dire un fichier vide.

Continuer l'instruction pour sauter une itération sous condition

Semblable à C et à de nombreux autres langages de programmation, bash a également un Continuez instruction, pour ignorer la partie restante d'une itération dans une boucle si une condition particulière est satisfaite.

for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]] then continue fi echo $i; Fini

La boucle ci-dessus imprimera des nombres de 0 à 10, sauf 5, car lors de l'itération de i=5 il y a une instruction continue, qui sautera le reste du code dans la boucle au début avec l'itération de i=6.

Dans l'exemple suivant, nous imprimons le nombre de lignes dans un fichier, et une itération particulière sera Continuez s'il s'agit d'un répertoire et non d'un fichier.

for file in `ls` do if [[ -d $file ]] then continue fi wc -c "$file" done

[[ -d $fichier ]] vérifie si le fichier est un répertoire. Si c'est le cas, nous passons au fichier suivant, c'est-à-dire à la prochaine itération. S'il ne s'agit pas d'un répertoire, on imprime le nombre de lignes du fichier en utilisant toilettes commande, comme indiqué précédemment.

Utilisation des boucles : scripts et ligne de commande

La syntaxe de boucle peut être utilisée directement dans le shell Bash ou à partir d'un fichier de script shell. Une fois par pour la syntaxe de boucle est entrée sur le shell, le shell continue l'invite pour permettre à l'utilisateur de continuer les commandes à boucler.

Ou bien l'utilisateur peut enregistrer cela dans un fichier de script et exécuter le fichier de script.

le #!/bin/bash au début spécifie l'interpréteur à utiliser lors de l'exécution du fichier. Bien que Bash soit le shell le plus couramment utilisé de nos jours, certains utilisateurs préfèrent des shells comme zsh, qui doit être spécifié à la place de bash au début de ce fichier.

Pour donner des autorisations d'exécution pour ce fichier, exécutez :

chmod +x test.sh

Enfin, pour exécuter le fichier, Cours:

./test.sh

Conclusion

le pour loop in Bash est une fonctionnalité assez simple mais a son utilisation dans presque tous les types de scénarios de script complexes. L'apprendre est très important, que vous soyez un utilisateur Linux régulier ou avancé, ou que vous commenciez à apprendre l'automatisation des tâches d'administration système et de DevOps.