GNU/Linux >> Tutoriels Linux >  >> Linux

Bash For Loop avec des exemples pratiques

Une caractéristique essentielle de chaque langage de programmation informatique est la capacité d'exécuter un morceau de code à plusieurs reprises. Cela fait gagner beaucoup de temps et réduit également les lignes de code dans un programme. La programmation bash permet aux utilisateurs d'exécuter une tâche encore et encore en utilisant des boucles. Dans cet article, nous allons nous intéresser à la boucle For déclaration.

Une boucle For L'instruction est utilisée pour exécuter une série de commandes jusqu'à ce qu'une condition particulière devienne fausse. Par exemple, vous pouvez l'utiliser pour exécuter une commande Linux cinq fois ou l'utiliser pour lire et traiter des fichiers sur les systèmes jusqu'à atteindre une condition particulière.

Commande Bash For Loop

La boucle For dans la programmation Bash, il existe deux syntaxes différentes :

  • La boucle For In
for item in (list)
do
command_one
command_two
...
done

Dans la syntaxe For In Loop ci-dessus, il y a quatre mots-clés - for, in, do et done. La liste fait référence aux valeurs de la "liste". Item est un nom de variable qui n'est pas un mot-clé dans le langage de programmation Bash.

Lorsque nous exécutons le programme, il exécutera la commande en fonction du nombre d'éléments dans la "liste". Par conséquent, si la liste contient cinq chiffres (1 2 3 4 5), la commande est exécutée cinq fois.

À chaque itération, la valeur de la liste est stockée dans la variable d'élément et utilisée dans le corps du programme.

  • La boucle For avec une syntaxe similaire à celle du langage de programmation C
for (( expression_1; expression_2; expression_3))
do
command_one
command_two
...
done

Avec l'instruction For Loop ci-dessus, si vous êtes un développeur C, C++ ou Java, vous devez être familiarisé avec la syntaxe. ‘expression_1 signifie initialisation, expression_2 signifie condition et expression_3 signifie mise à jour.

Lorsque nous exécutons le programme, 'expression_1' est évalué avant d'effectuer la première itération initialisant les valeurs des variables pour la boucle For.

Le corps du programme est exécuté jusqu'à ce que expression_2 soit TRUE. Le corps du programme fait ici référence aux commandes comprises entre les mots-clés do et done. Maintenant, après chaque itération du programme, expression_3 est évaluée.

Après avoir compris cela, examinons quelques exemples de Bash For Loop que vous pouvez utiliser dans vos activités quotidiennes en travaillant avec des systèmes Linux. Nous allons écrire des scripts et les exécuter dans le terminal. Notez que tous les scripts Bash utilisent l'extension ".sh.".

Utilisez la boucle For pour imprimer une série de chaînes

Vous pouvez utiliser une boucle For In pour imprimer une série de chaînes. Jetez un oeil au code ci-dessous. Nous avons déjà les trois fichiers utilisés dans le programme dans notre répertoire de travail. C'est-à-dire "testFile1", "testFile2" et "testFile3".

#!/bin/bash
for item in testFile1 testFile2 testFile3
do
cat $item
echo "Done with file $item"
echo 
done

La sortie est :

Le programme ci-dessus répertorie le contenu du fichier spécifié dans la liste. Autrement dit, testFile1, testFile2 et testFile3. La commande 'cat' est un utilitaire Linux utilisé pour afficher le contenu d'un fichier.

Par conséquent, le programme parcourt les fichiers en commençant par "testFile1", exécute la commande "cat" dessus avant d'imprimer l'instruction "done with testFilee" et passe au fichier suivant.

Après avoir parcouru tous les fichiers de la liste, le programme se termine automatiquement.

'For In Loop' avec des éléments de tableau pour sauvegarder des fichiers

Vous pouvez utiliser une boucle For In pour itérer les éléments d'un tableau. Jetez un œil au code ci-dessous.

#!/bin/bash

Files=('testFile1' 'testFile2' 'testFile3')
for item in "${Files[@]}"; 
do
cp $item{,.bak}
echo "Created a backup of $item"
done

La sortie est comme indiqué ci-dessous.

Le programme ci-dessus utilise la commande cp pour créer des sauvegardes de fichiers dans le tableau. Au fur et à mesure qu'il parcourt chaque fichier, il crée une sauvegarde des données et imprime le "message de sauvegarde créée" avant de passer à l'élément suivant du tableau.

'Pour en boucle' avec plage

Vous pouvez itérer sur une plage de nombres. Par exemple, vous souhaitez itérer entre les chiffres 1 à 100. L'écriture de tous ces chiffres dans votre programme rendra le code assez important. Nous pouvons résoudre ce problème en utilisant des plages. Jetez un œil au code ci-dessous.

#!/bin/bash

for i in {0..50}
do
echo "COUNT: $i"
done

Le résultat devrait être comme indiqué ci-dessous.

D'après la sortie ci-dessus, nous voyons que le programme a imprimé des nombres de 1 à 50. C'est parce que nous lui avons donné une plage de 1 à 50 chiffres.

Supposons que vous souhaitiez créer une plage qui ignore un certain nombre de chiffres avant d'imprimer une sortie. Ensuite, nous devrons inclure un troisième paramètre dans la syntaxe de la plage. Voir le code ci-dessous.

#!/bin/bash

for i in {0..100..10}
do
echo "COUNT: $i"
done

Le résultat devrait être comme indiqué ci-dessous.

Le résultat devrait être comme indiqué ci-dessous.

Dans l'image ci-dessus, nous voyons que le programme a imprimé les nombres de 0 à 100 mais en sautant dix (10) chiffres à chaque itération.

'For Loop' avec la syntaxe de programmation C

Après avoir examiné plusieurs exemples avec le "For In Loop", examinons l'autre syntaxe de boucle For. Il contient une expression d'initialisation qui initialise la boucle, une expression de condition qui détermine l'exécution du programme et une expression d'incrémentation qui met à jour la valeur de la variable.

Jetez un œil au code ci-dessous.

#!/bin/bash

for (( i=5; i>=1; i-- ))
do 
echo "COUNT: $i"
done

Le résultat devrait être comme indiqué ci-dessous.

Créer une boucle infinie avec la boucle For

Pour créer une boucle infinie dans Bash, nous utiliserons la syntaxe de programmation C. Voir le code ci-dessous.

#!/bin/bash

for (( ; ; ))
do
echo "Use Ctrl+C to terminate the loop."
echo "Starting Infinite Loop..."
done

Le résultat devrait être comme indiqué ci-dessous.

Pour sortir d'une boucle infinie, appuyez sur Ctrl + C pour annuler le processus.

Instructions Break et Continue dans une "boucle For"

En programmation, les instructions Break et Continue contrôlent l'exécution d'un programme. L'instruction Break termine le programme et sort de la boucle. L'instruction Continue, d'autre part, force la prochaine itération du programme à avoir lieu.

  • La déclaration de rupture

Regardons le programme ci-dessous, qui utilise l'instruction Break.

#!/bin/bash
for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux
do
if [[ "$distro" == 'kali' ]]; then
break
fi
echo "Linux_distribution: $distro"
done

Le résultat devrait être comme indiqué ci-dessous.

Dans l'image ci-dessus, nous voyons que "Kali" n'a pas été imprimé dans la sortie. C'est parce que nous avons donné une "Condition Si" qui vérifiait la valeur détenue par la variable "distro". Si la valeur était "Kali", l'instruction "break" était exécutée et terminait la boucle.

Comme vous pouvez le voir, ArchLinux n'a pas été imprimé dans la sortie car l'instruction break a mis fin au programme.

L'instruction Continuer

Contrairement à l'instruction Break, l'instruction Continue termine le programme sur cette partie mais force l'exécution de la prochaine itération du programme.

Jetez un œil au code ci-dessous.

#!/bin/bash

for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux
do
if [[ "$distro" == 'Kali' ]]; then
continue
fi
echo "Linux_distribution: $distro"
done

Le résultat devrait être comme indiqué ci-dessous.

Dans l'image ci-dessus, nous voyons que "Kali" n'a pas été imprimé dans la sortie. C'est parce que nous avons donné une "Condition Si" qui vérifiait la valeur détenue par la variable "distro". Si la valeur était "Kali", l'instruction "continue" était exécutée. Il a mis fin à la boucle à ce stade mais a forcé l'exécution de la partie suivante du programme.

Comme vous pouvez le voir, "Kali" n'a pas été imprimé dans la sortie alors que "ArchLinux" l'était. L'instruction Continue a forcé l'exécution de la partie suivante du programme.

Plus de programmes Bash pratiques utilisant la boucle For

Après avoir examiné plusieurs programmes Bash utilisant l'instruction "For Loop", examinons des exemples concrets que vous pouvez utiliser pour gérer vos systèmes Linux.

  • Un programme Bash pour convertir des fichiers MP3 en WAV

Dans ce programme, vous aurez besoin de l'outil MPG123 installé sur votre système. Le code ci-dessous recherche tout fichier avec l'extension ".mp3." et le convertit en un fichier ".wav." à l'aide de l'outil "mpg123".

#!/bin/bash
for item in ./*.mp3
do
mpg123 -w music.wav $item.mp3
done

Dans l'image ci-dessous, nous voyons que nous avons converti "Audio.mp3" en "Music.wav".

  • Programme "For Loop" pour vérifier si les fichiers firefox.desktop existent.

Le programme ci-dessous parcourra tous les fichiers présents dans le répertoire applications/ et indiquera si firefox.desktop est présent.

#!/bin/bash
for item in /usr/share/applications/*
do
if [ "${item}" == "/usr/share/applications/firefox.desktop" ]
then
echo "Firefox.Desktop is present in the applications directory";
fi
done

Conclusion

Maintenant que vous avez appris à utiliser la boucle For déclaration dans la programmation Bash, créez des programmes pour automatiser diverses tâches dans vos systèmes Linux. Si vous avez trouvé cet article utile, n'hésitez pas à partager le lien avec vos amis.


Linux
  1. Bash For Loop Guide et exemples

  2. Tutoriel sur l'état de sortie de Bash Shell avec des exemples pratiques

  3. Vous tenir au courant - Exemples de boucle Bash For, While, Until

  4. 12 exemples de boucle Bash For pour votre script de shell Linux

  5. Bash for loop Exemples

Bash For Loops avec des exemples

Bash For Loop – Le guide le plus pratique

Bash Scripting Part2 - Boucles For et While avec exemples

Tutoriel d'introduction aux scripts Bash avec 5 exemples pratiques

Tutoriel sur les fonctions Bash Shell avec 6 exemples pratiques

Script bash pour la boucle expliqué avec des exemples