Les boucles sont l'un des concepts fondamentaux des langages de programmation. Les boucles sont pratiques lorsque vous souhaitez exécuter une série de commandes encore et encore jusqu'à ce qu'une certaine condition soit atteinte.
Dans les langages de script tels que Bash, les boucles sont utiles pour automatiser les tâches répétitives.
Il existe trois constructions de boucle de base dans les scripts Bash, for
boucle, while
boucle, et until
boucle.
Dans ce didacticiel, nous aborderons les bases des boucles for dans Bash. Nous vous montrerons également comment utiliser le break
et continue
instructions pour modifier le flux d'une boucle.
Le standard Bash for
Boucle #
Le for
boucle itère sur une liste d'éléments et exécute l'ensemble de commandes donné.
Le Bash for
boucle prend la forme suivante :
for item in [LIST]
do
[COMMANDS]
done
La liste peut être une série de chaînes séparées par des espaces, une plage de nombres, la sortie d'une commande, un tableau, etc.
Boucle sur les chaînes #
Dans l'exemple ci-dessous, la boucle itérera sur chaque élément de la liste de chaînes, et la variable element
sera défini sur l'élément actuel :
for element in Hydrogen Helium Lithium Beryllium
do
echo "Element: $element"
done
La boucle produira la sortie suivante :
Element: Hydrogen
Element: Helium
Element: Lithium
Element: Beryllium
Boucle sur une plage de nombres #
Vous pouvez utiliser l'expression de séquence pour spécifier une plage de nombres ou de caractères en définissant un début et une fin de plage. L'expression de la séquence prend la forme suivante :
{START..END}
Voici un exemple de boucle qui parcourt tous les nombres de 0 à 3 :
for i in {0..3}
do
echo "Number: $i"
done
Number: 0
Number: 1
Number: 2
Number: 3
À partir de Bash 4, il est également possible de spécifier un incrément lors de l'utilisation de plages. L'expression prend la forme suivante :
{START..END..INCREMENT}
Voici un exemple montrant comment incrémenter par 5 :
for i in {0..20..5}
do
echo "Number: $i"
done
Number: 0
Number: 5
Number: 10
Number: 15
Number: 20
Boucle sur les éléments du tableau #
Vous pouvez également utiliser le for
boucle pour itérer sur un tableau d'éléments.
Dans l'exemple ci-dessous, nous définissons un tableau nommé BOOKS
et itérer sur chaque élément du tableau.
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby')
for book in "${BOOKS[@]}"; do
echo "Book: $book"
done
Book: In Search of Lost Time
Book: Don Quixote
Book: Ulysses
Book: The Great Gatsby
La boucle Bash for de style C #
La syntaxe du style C for
boucle prend la forme suivante :
for ((INITIALIZATION; TEST; STEP))
do
[COMMANDS]
done
L'INITIALIZATION
partie est exécutée une seule fois au démarrage de la boucle. Ensuite, le TEST
partie est évaluée. S'il est faux, la boucle est terminée. Si le TEST
est vrai, commandes à l'intérieur du corps de for
boucle sont exécutées, et le STEP
la pièce est mise à jour.
Dans l'exemple de code suivant, la boucle démarre en initialisant i = 0
, et avant chaque itération vérifie si i ≤ 10
. Si vrai, il imprime la valeur actuelle de i
et [incrémente la variable] i
par 1 (i++
) sinon la boucle se termine.
for ((i = 0 ; i <= 1000 ; i++)); do
echo "Counter: $i"
done
La boucle itérera 1 001 fois et produira le résultat suivant :
Counter: 0
Counter: 1
Counter: 2
...
Counter: 998
Counter: 999
Counter: 1000
break
et continue
Relevés #
La break
et continue
Les instructions peuvent être utilisées pour contrôler l'exécution de la boucle for.
break
Relevé #
La break
L'instruction termine la boucle en cours et passe le contrôle du programme à l'instruction qui suit l'instruction terminée. Il est généralement utilisé pour terminer la boucle lorsqu'une certaine condition est remplie.
Dans l'exemple suivant, nous utilisons le if
instructionpour terminer l'exécution de la boucle une fois que l'élément itéré courant est égal à "Lithium".
for element in Hydrogen Helium Lithium Beryllium; do
if [[ "$element" == 'Lithium' ]]; then
break
fi
echo "Element: $element"
done
echo 'All Done!'
Element: Hydrogen
Element: Helium
All Done!
continue
Relevé #
Le continue
L'instruction quitte l'itération actuelle d'une boucle et passe le contrôle du programme à l'itération suivante de la boucle.
Dans l'exemple suivant, nous parcourons une plage de nombres. Lorsque l'élément itéré courant est égal à '2', le continue
fera revenir l'exécution au début de la boucle et continuer avec l'itération suivante :
for i in {1..5}; do
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done
Number: 1
Number: 3
Number: 4
Number: 5
Bash for
Exemples de boucles #
Renommer des fichiers avec des espaces dans le nom de fichier #
L'exemple suivant montre comment renommer tous les fichiers du répertoire courant avec un espace dans leurs noms en remplaçant l'espace par un trait de soulignement :
for file in *\ *; do
mv "$file" "${file// /_}"
done
Décomposons le code ligne par ligne :
- La première ligne crée un
for
boucle et parcourt une liste de tous les fichiers avec un espace dans leur nom. L'expression*\ *
crée la liste. - La deuxième ligne s'applique à chaque élément de la liste et déplace le fichier vers un nouveau en remplaçant l'espace par un trait de soulignement (
_
). La partie${file// /_}
utilise l'expansion des paramètres du shell pour remplacer un motif dans un paramètre par une chaîne. done
indique la fin du segment de boucle.
Modification de l'extension de fichier #
L'exemple suivant montre comment utiliser le Bash for
boucle pour renommer tous les fichiers envoyant avec .jpeg dans le répertoire courant en remplaçant l'extension de fichier de .jpeg par .jpg.
for file in *.jpeg; do
mv -- "$file" "${file%.jpeg}.jpg"
done
Analysons le code ligne par ligne :
- La première ligne crée un
for
boucle et parcourt une liste de tous les fichiers se terminant par ".jpeg". - La deuxième ligne s'applique à chaque élément de la liste et déplace le fichier vers un nouveau en remplaçant « .jpeg » par « .jpg ».
${file%.jpeg}
pour supprimer la partie ".jpeg" du nom de fichier à l'aide de l'expansion des paramètres du shell done
indique la fin du segment de boucle.
Conclusion #
Le Bash for
La boucle est utilisée pour exécuter un ensemble donné de commandes de manière répétée pendant un nombre fixe de fois.
Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.