Je cherche la boucle de base comme:
for(int i = 0; i < MAX; i++) {
doSomething(i);
}
mais pour bash.
Je cherche la boucle de base comme:
for(int i = 0; i < MAX; i++) {
doSomething(i);
}
mais pour bash.
Voir: ce site
for i in $(seq 1 10);
do
echo $i
done
Le bash for
se compose d'une variable (la variable d'itération) et une liste de mots où l'itérateur va, bien, itérer.
Donc, si vous avez une liste limitée de mots, il suffit de les placer dans la syntaxe suivante:
for w in word1 word2 word3
do
doSomething($w)
done
Probablement vous souhaitez effectuer une itération sur certains numéros, vous pouvez utiliser l' seq
commande pour générer une liste de nombres pour vous: (de 1 à 100 par exemple)
seq 1 100
et de l'utiliser dans la boucle FOR:
for n in $(seq 1 100)
do
doSomething($n)
done
Remarque l' $(...)
de la syntaxe. C'est un bash comportement, il vous permet de passer la sortie d'une commande (dans notre cas, à partir d' seq
) à l'autre ( for
)
C'est vraiment utile lorsque vous devez effectuer une itération sur tous les répertoires dans le chemin, par exemple:
for d in $(find $somepath -type d)
do
doSomething($d)
done
Les possibilités sont infinies pour générer des listes.
Essayez l'aide intégrée bash
:
$ help for
for: for NAME [in WORDS ... ;] do COMMANDS; done
The `for' loop executes a sequence of commands for each member in a
list of items. If `in WORDS ...;' is not present, then `in "$@"' is
assumed. For each element in WORDS, NAME is set to that element, and
the COMMANDS are executed.
for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done
Equivalent to
(( EXP1 ))
while (( EXP2 )); do
COMMANDS
(( EXP3 ))
done
EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is
omitted, it behaves as if it evaluates to 1.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.