Android

Bash for loop

Shell Scripting Tutorial for Beginners 19 - FOR loop

Shell Scripting Tutorial for Beginners 19 - FOR loop

Table des matières:

Anonim

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, pour la boucle, la boucle while et la boucle until.

Dans ce didacticiel, nous couvrirons les bases des boucles for dans Bash. Nous vous montrerons également comment utiliser les instructions break et continue pour modifier le flux d'une boucle.

La boucle standard pour la boucle

La boucle for parcourt une liste d'éléments et exécute l'ensemble de commandes donné.

La boucle Bash for prend la forme suivante:

for item in do 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 l' element variable 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 chiffres ou de caractères en définissant un point de départ et un point d'arrivée de la plage. L'expression de séquence prend la forme suivante:

{START..END}

Dans l'exemple ci-dessous, la boucle parcourra 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 des plages. L'expression prend la forme suivante:

{START..END..INCREMENT}

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 la boucle for pour parcourir un tableau d'éléments:

Dans l'exemple ci-dessous, nous définissons un tableau BOOKS et itérons 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

Le Bash de style C pour la boucle

La syntaxe de la boucle for de style C prend la forme suivante:

for ((INITIALIZATION; TEST; STEP)) do done

La partie INITIALIZATION n'est exécutée qu'une seule fois lorsque la boucle démarre. Ensuite, la partie TEST est évaluée. S'il est faux, la boucle for est terminée. Si le TEST est vrai, les commandes à l'intérieur du corps de la boucle for sont exécutées et la partie STEP est mise à jour.

Dans le code suivant, la boucle démarre en initialisant i = 0 , puis avant chaque itération vérifie si i ≤ 10 . Si true, il affiche la valeur actuelle de i et i par 1 ( i++ ) sinon la boucle se termine.

for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done

La boucle va itérer 1001 fois et produire la sortie suivante:

Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000

Déclarations Break and Continue

Les instructions break et continue peuvent être utilisées pour contrôler l'exécution de la boucle for.

Déclaration de pause

L'instruction break 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 l'instruction if pour terminer l'exécution de la boucle une fois que l'élément itéré actuel est égal à «Lithium».

for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'

Element: Hydrogen Element: Helium All Done!

Continuer la déclaration

L'instruction continue 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 effectuons une itération sur une plage de nombres et lorsque l'élément itéré actuel est égal à '2', l'instruction continue entraînera l'exécution pour revenir au début de la boucle et pour continuer avec l'itération suivante.

for i in {1..5}; do if]; then continue fi echo "Number: $i" done

Number: 1 Number: 3 Number: 4 Number: 5

Exemples de Bash For Loop

Renommer des fichiers avec des espaces dans le nom de fichier

L'exemple suivant montre comment utiliser la boucle Bash for pour renommer tous les fichiers du répertoire en cours avec un espace dans ses noms en remplaçant l'espace pour souligner.

for file in *\ *; do mv "$file" "${file// /_}" done

Décomposons le code ligne par ligne:

  • La première ligne crée une boucle for et parcourt une liste de tous les fichiers avec un espace dans son 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 shell pour remplacer un modèle 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 la boucle Bash for pour renommer tous les fichiers se terminant par.jpeg dans le répertoire en cours en remplaçant l'extension de fichier de.jpeg en.jpg.

for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done

Analysons le code ligne par ligne:

  • La première ligne crée une boucle for 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 en utilisant l'expansion du paramètre shell done indique la fin du segment de boucle.

Conclusion

À présent, vous devriez avoir une bonne compréhension de l'utilisation de la boucle bash for pour parcourir les listes.

terminal de boucle bash