GNU/Linux >> Tutoriels Linux >  >> Linux

Bash pour la boucle

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.


Linux
  1. Bash For Loop Guide et exemples

  2. Paralléliser une boucle Bash For ?

  3. Comment créer une boucle For avec un nombre variable d'itérations ?

  4. Incrémenter le numéro de build dans Bash ?

  5. Bash for loop Exemples

Bash For Loop avec des exemples pratiques

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