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

Contenu supprimé Contenu ajouté
m JackPotte a déplacé la page Programmation bash-ksh/Boucles vers Programmation Bash/Boucles sans laisser de redirection
fusion d'historiques
Ligne 1 :
{{à fusionner|Programmation Bash/Boucles}}
 
== 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.
<source lang="bash">
<pre>
for variable in liste_valeurs
do instruction(s)
done
</presource>
Par exemple, on peut utiliser la boucle <code>for</code> pour implanterprogrammer un clone de la fonction <code>ls</code> :
<source lang="bash">
<pre>
for i in *
do
do echo $i
done
</presource>
Dans cet exemple, l'étoile va êtreest 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 serontsont 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 36 ⟶ 49 :
=== Seconde syntaxe ===
La boucle <code>for</code> possède une deuxième syntaxe :
<source lang="bash">
<pre>
for ((e1;e2;e3))
do instruction(s)
done
</presource>
Dans laquelle, <code>e1</code>, <code>e2</code> et <code>e3</code> sont des expressions aithmétiquesarithmé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.
 
<source lang="bash">
<pre>
for ((i=0 ; 10 - $i ; i++))
do echo $i
done
</presource>
 
== 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éindéterminé de tours de boucle, voirvoire même inifiniinfini si la condition ne devient jamais fausse.
<source lang="bash">
<pre>
while condition
do instruction(s)
done
</presource>
 
<source lang="bash">
<pre>
#! /bin/kshbash
 
a_trouver=$(($RANDOM % 100))
Ligne 64 ⟶ 77 :
echo "entrez un nombre compris entre 0 et 100"
read i
while [ "$i" -ne "$a_trouver" ]; do
if [ "$i" -lt "$a_trouver" ]; then
echo "trop petit, entrez un nombre compris entre 0 et 100"
else
Ligne 73 ⟶ 86 :
done
echo "bravo, le nombre etait en effet $a_trouver"
</presource>
 
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 bash-ksh (livre)]]