« Programmation Bash/Boucles » : différence entre les versions

Contenu supprimé Contenu ajouté
les " " sont tres importantes si les arguments contiennet des espaces
Tavernierbot (discussion | contributions)
Ligne 1 :
{{Programmation Bash}}
 
== Boucle <code>for</code> ==
=== Première syntaxe ===
La boucle <code>for</code> permet de parcourir une liste de valeurs, elle effectue donc un nombre de tours de boucle qui est connu à l'avance.
<pre>
<source lang="bash">
for variable in liste_valeurs
do instruction(s)
done
</sourcepre>
Par exemple, on peut utiliser la boucle <code>for</code> pour programmerimplanter un clone de la fonction <code>ls</code> :
<pre>
<source lang="bash">
for i in *
do echo $i
do
echo $i
done
</sourcepre>
Dans cet exemple, l'étoile estva être remplacée par tous les fichiers du répertoire courant, la boucle <code>for</code> va donc donner successivement comme valeur à la variable <code>i</code> tous ces noms de fichier. Le corps de la boucle affichant la valeur de la variable <code>i</code>, le nom de tous les fichiers du répertoire courant sontseront affichés successivement.
 
La boucle for est très souvent utilisée dans un script pour parcourir la liste des arguments fournie au script. Par exemple :
 
<source lang="bash">
for i in "$*"
do
echo "$i"
done
</source>
liste tous les arguments transmis au script.
 
 
Il est souvent utile de pouvoir effectuer une boucle sur une liste de valeurs, pour cela on utilise la fonction <code>seq</code>. Cette fonction prend en arguments deux entiers et renvoie la liste de tous les entiers compris entre ces bornes.
Ligne 49 ⟶ 35 :
=== Seconde syntaxe ===
La boucle <code>for</code> possède une deuxième syntaxe :
<pre>
<source lang="bash">
for ((e1;e2;e3))
do instruction(s)
done
</sourcepre>
Dans laquelle, <code>e1</code>, <code>e2</code> et <code>e3</code> sont des expressions arithmétiquesaithmétiques. Une telle boucle commence par exécuter l'expression <code>e1</code>, puis tant que l'expression <code>e2</code> est différente de zéro le bloc d'instructions est exécuté et l'expression <code>e3</code> évaluée.
 
<pre>
<source lang="bash">
for ((i=0 ; 10 - $i ; i++))
do echo $i
done
</sourcepre>
 
== Boucles <code>until</code> et <code>while</code> ==
La boucle <code>while</code> exécute un bloc d'instructions tant qu'une certaine condition est satisfaite, lorsque cette condition devient fausse la boucle se termine. Cette boucle permet donc de faire un nombre indeterminé de tours de boucle, voir même inifini si la condition ne devient jamais fausse (horreur programmatique !).
<pre>
<source lang="bash">
while condition
do instruction(s)
done
</sourcepre>
 
<pre>
<source lang="bash">
#! /bin/bashksh
 
a_trouver=$(($RANDOM % 100))
Ligne 86 ⟶ 72 :
done
echo "bravo, le nombre etait en effet $a_trouver"
</sourcepre>
 
La syntaxe de la boucle <code>until</code> est exactement la même que celle de la boucle <code>while</code>, mais sa signification est inversée : la boucle est exécutée tant que la condition est fausse.
 
[[Catégorie:Programmation Bashbash-ksh (livre)]]