Programmation BASH

Boucle imbriquée dans les exemples de script Bash

Boucle imbriquée dans les exemples de script Bash

En programmation ou en scripting, la boucle est l'un des concepts les plus basiques et les plus puissants. Une boucle exécute certaines tâches jusqu'à ce que les conditions spécifiées soient remplies. Chaque langage de programmation ou de script a différentes manières de mettre en œuvre le concept.

Dans ce guide, découvrez la boucle imbriquée dans les scripts bash.

Boucle imbriquée

Une boucle, par définition, effectue certaines tâches jusqu'à ce que les conditions soient remplies. Que faire si la tâche comprend l'exécution d'une boucle? C'est le concept d'une boucle imbriquée. Une boucle dans une boucle.

C'est la structure de base d'une boucle.

tandis que (condition)
# quelque chose

Ici, la boucle while continuera à effectuer les tâches déclarées à l'intérieur du bloc tant que la condition est remplie. Dans le cas d'une boucle while imbriquée, la structure ressemblerait à ceci.

# boucle principale
tandis que (condition)
# boucle imbriquée
tandis que (condition)
# quelque chose

En théorie, les boucles imbriquées peuvent aller à une profondeur infinie. Dans de nombreuses situations, les boucles imbriquées peuvent être la solution parfaite.

Boucle dans le script bash

Bash est un puissant langage de script. Il existe différentes structures de boucle dans le bash. Les plus populaires sont les boucles for, while et until. Si vous êtes déjà familiarisé avec la programmation C/C++, la syntaxe sera certainement assez similaire.

Pour les boucles

La boucle for est l'une des sorties de formulaires les plus courantes et polyvalentes, etc. La structure des boucles dans les scripts bash. La structure ressemble également beaucoup à la boucle for en C/C++.

La structure de la boucle for dans bash est la suivante.

for ((initialiser ; condition ; incrémenter)); fais
# quelque chose
Fini

La structure est très explicite. La section d'initialisation n'est pas obligatoire. Cependant, la condition et l'incrément sont prioritaires.

Mettons-le en action. Voici un script bash très simpliste qui implémente la boucle for.

pour ((i = 0 ; je < 5 ; i++)); do
echo "bonjour tout le monde"
Fini

Il est également possible d'utiliser list/range comme condition de boucle. C'est particulièrement utile si vous travaillez avec une liste de fichiers, des plages de nombres, des tableaux, des sorties de commande, etc. La structure ressemble à ceci.

pour l'article dans ; fais
# quelque chose
Fini

Par exemple, le script suivant imprimera "hello world" cinq fois.

pour i dans 1… 5 ; fais
echo "bonjour tout le monde"
Fini

Et si nous devons travailler avec le contenu d'un répertoire? Dans l'exemple suivant, le script imprimera tous les fichiers du répertoire /usr/bin.

pour i dans /usr/bin/*; fais
écho $i
Fini

Maintenant, que faisons-nous pour avoir une boucle for imbriquée? C'est juste une boucle for dans une autre. Voici une boucle for imbriquée utilisant l'exemple précédent.

pour ((i = 0 ; je < 3 ; i++)); do
pour((j = 0 ; j < 2 ; j++)); do
echo "bonjour tout le monde"
Fini
Fini

La sortie sera "hello world" 6 fois. La boucle extérieure s'exécutera trois fois, la boucle intérieure s'exécutera deux fois.

Alors que les boucles

La boucle while est une autre boucle populaire et intuitive disponible dans les scripts bash. La syntaxe ressemble à ceci.

tandis que ; fais
# quelque chose
Fini

Dans l'exemple suivant, le script imprimera "hello world" cinq fois.

nombre=1
while [ $num -le 5 ]; fais
echo "bonjour tout le monde"
nombre=$(($num+1))
Fini

À quoi ressemblerait une boucle while imbriquée? Voici un exemple simple.

num_a=1
nombre_b=1
while [ $num_a -le 5 ]; fais
while [ $num_b -le 5 ]; fais
echo "bonjour tout le monde"
num_b=$(($num_b+1))
Fini
num_a=$(($num_a+1))
Fini

Jusqu'aux boucles

Si vous avez une formation en programmation en C/C++, alors vous êtes familier avec la boucle do-while. Malheureusement, bash n'a rien de tel. Cependant, jusqu'à ce que la boucle fonctionne de manière similaire. La syntaxe est également assez similaire.

jusqu'à ce que [ ] ; fais
# quelque chose
Fini

La différence entre le moment et le moment où la boucle est la condition de test. Tant que la condition de test est vraie, une boucle while continuera à s'exécuter. Une boucle until, cependant, ne continuera à s'exécuter que si la condition est fausse.

Voici un exemple rapide de la boucle while. Il imprimera la table de multiplication de 2.

num_a=1
jusqu'à [ $num_a -gt 10 ] ; fais
echo $(($num_a * 2))
num_a=$(($num_a+1))
Fini

Rupture de boucle

Dans certaines situations, si certaines conditions sont remplies, l'exécution du reste de la boucle devient redondante. Les ruptures de boucle sont une fonctionnalité intéressante qui permet de sortir de la boucle à une condition donnée. C'est plus important pour les boucles imbriquées car plus les boucles sont hautes, plus la consommation de ressources et l'inefficacité sont importantes.

Ici, la boucle for suivante cessera de s'exécuter dès qu'elle atteint la condition.

pour ((i=1;i<=100;i++)); do
écho $i
si [ $i -eq 10 ]; ensuite
Pause
Fi
Fini

Découvrez comment rompre la boucle pour une explication détaillée et une démonstration des ruptures de boucle.

Dernières pensées

Une boucle imbriquée est un concept simple et puissant à comprendre et à mettre en œuvre. Espérons que ce guide a pu décrire et démontrer le concept.

Intéressé par plus de guides de script bash? Consultez les guides suivants.

  • Bash boucle infinie
  • Entrée utilisateur du script Bash
  • Tableau de retour de fonction Bash

Bon calcul!

Meilleurs jeux de laboratoire d'applications Oculus
Si vous êtes propriétaire d'un casque Oculus, vous devez être au courant du chargement latéral. Le chargement latéral est le processus d'installation ...
Top 10 des jeux à jouer sur Ubuntu
La plate-forme Windows a été l'une des plates-formes dominantes pour les jeux en raison du pourcentage énorme de jeux qui se développent aujourd'hui p...
5 meilleurs jeux d'arcade pour Linux
De nos jours, les ordinateurs sont des machines sérieuses utilisées pour les jeux. Si vous ne pouvez pas obtenir le nouveau score élevé, vous saurez c...