boucle for dans bash
- La boucle
fordans Bash - Exemples d’utilisation de la boucle
fordans Bash - Sortie conditionnelle avec un
breakdans la boucleforde Bash - Substitution de commande avec boucle
for
Ce didacticiel explique l’utilisation de la boucle for dans les scripts Bash en utilisant la notation de plage et la notation à trois expressions comme dans le langage de programmation C.
La boucle for dans Bash
La boucle for est une instruction Bash utilisée pour exécuter des commandes de manière répétée. La boucle for de Bash utilise deux notations principales. Les deux notations sont présentées ci-dessous.
La première notation utilise la boucle for avec une plage définie. Dans la syntaxe ci-dessous, l’extrémité de la plage est n. Cela signifie que la boucle for exécutera les commandes qu’elle contient n fois avant de s’arrêter.
for variable in 1 2 3 ... n do command1 command2 done La seconde notation utilise la boucle for avec une expression à trois comme dans le langage de programmation C. exp1 est l’initialisation, exp2 est la condition et exp3 est l’incrément.
for ((exp1; exp2; exp3)) do command1 command2 done Exemples d’utilisation de la boucle for dans Bash
Les scripts ci-dessous illustrent l’utilisation de la boucle for dans les scripts Bash.
Ce script met la valeur de la variable i à 1 la première fois, et il imprime line number 1. Ensuite, il retourne à la boucle for, met la variable i à 2, et imprime line number 2.
Le script le fait à plusieurs reprises, en changeant la valeur de i jusqu’à ce qu’il atteigne le dernier chiffre, 5. Une fois qu’il a imprimé line number 5, la boucle for se termine automatiquement.
#!/bin/bash for i in 1 2 3 4 5 do printf "line number $i" printf "\n" done L’exécution du script ci-dessus imprime la sortie suivante sur la sortie standard.
line number 1 line number 2 line number 3 line number 4 line number 5 Le script ci-dessous utilise les accolades pour définir une plage pour la boucle for à parcourir. Les nombres à l’intérieur des accolades sont incrémentés séquentiellement.
La première fois, la valeur de i est mise à 1. Le script exécute alors les deux commandes printf à l’intérieur de la boucle for. La valeur de i est incrémentée de 1, elle devient 2, et les commandes printf à l’intérieur de la boucle for sont exécutées.
La valeur de i est incrémentée à plusieurs reprises jusqu’à ce qu’elle devienne finalement 5, et une fois les deux commandes printf exécutées, la boucle for se termine automatiquement.
!/bin/bash for i in {1..5} do printf "Hello World $i" printf "\n" done Voici la sortie imprimée après l’exécution du script.
Hello World 1 Hello World 2 Hello World 3 Hello World 4 Hello World 5 Ci-dessous, le script utilise la notation à trois expressions comme dans le langage de programmation C. Dans la première expression, x est initialisé à 0. La deuxième expression a le test conditionnel qui vérifie si x est inférieur ou égal à la valeur de la variable max.
La valeur de la variable max a été fixée à 5. La dernière expression incrémente la valeur de x de 1.
La première fois, la valeur de x est 0, et la condition renvoie vraie car 0 est inférieur ou égal à 5. La boucle for imprime alors number: 0 sur le terminal, et la valeur de x est incrémentée de 1. x devient maintenant 1.
1 est également testé s’il est inférieur ou égal à 5, il renvoie vrai et la boucle for imprime number: 1 Ce processus se répète jusqu’à ce que la condition renvoie false et que la boucle for se termine.
#!/bin/bash max=5 printf "Print Numbers from 0 to $max\n" for ((x=0;x<=max;x++)); do printf "number: $x\n" done Vous trouverez ci-dessous la sortie imprimée sur le terminal après l’exécution du script.
Print Numbers from 0 to 5 number: 0 number: 1 number: 2 number: 3 number: 4 number: 5 Sortie conditionnelle avec un break dans la boucle for de Bash
Le script ci-dessous montre comment sortir d’une boucle for avec le mot-clé break. La boucle for est configurée pour itérer si la valeur de la variable x est inférieure ou égale à la valeur de la variable max. Cependant, il y a une commande test à l’intérieur de la boucle for.
La commande test vérifie si la valeur de la variable x est égale à 3 ; si ce test retourne true, le script rencontre le mot clé break, et la boucle for se termine.
#!/bin/bash max=5 printf "Print Numbers from 0 to $max\n" printf "Program will exit when we hit 3\n" for ((x=0;x<=max;x++)); do printf "number: $x\n" if [ $x -eq 3 ] then break fi done Voici la sortie affichée sur le terminal standard lorsque le script est exécuté. La boucle for existe lorsque la valeur de x est égale à 3 car la commande test à l’intérieur de la boucle for évalue l’expression arithmétique lorsque la valeur de la variable x est définie sur 3, et il renvoie vrai. Ensuite, le script rencontre le mot-clé break dans l’instruction if et se termine.
Print Numbers from 0 to 5 Program will exit when we hit 3 number: 0 number: 1 number: 2 number: 3 Substitution de commande avec boucle for
Le script ci-dessous montre l’utilisation de la boucle for avec substitution de commande. La substitution de commande est une fonctionnalité Bash qui nous permet d’exécuter des commandes Linux et de stocker la sortie de la commande dans une variable Bash. Une fois qu’une commande est exécutée à l’aide de cette fonctionnalité, la sortie standard de la commande remplace la commande.
Dans le script, la commande cat est exécutée en utilisant la substitution de commande. La sortie de cat file1.txt remplace la commande, et la boucle for parcourt la sortie de la commande et l’imprime sur la sortie standard à l’aide de la commande printf.
#!/bin/bash printf "Program prints the lines of a file\n\n" for line in $(cat file1.txt) do printf "$line" printf "\n" done Le script produit la sortie suivante lorsqu’il est exécuté. Le fichier file1.txt contient une liste de trois langues qui sont imprimées sur le terminal standard.
Program prints the lines of a file French English Spanish 