Bash basic
Les boucles
Boucle "for"
C'est la base on boucle sur une liste.
for i in 1 2 3 4 5
do
echo -n "$i "
done
écrit :
1 2 3 4 5
la liste peut être le résultat d'une commande:
for i in $(seq 1 2 20)
do
echo -n "$i "
done
nous donne :
1 3 5 7 9 11 13 15 17 19
Ou encore :
for i in `ls -a`
do
echo $i;
done
donne... l'équivalant de la -a!
.
..
.bash_history
.bash_logout
.bash_profile
.bashrc
... et la suite ...
Attention cependant
for i in `ls -la`
do
echo $i;
done
Ne donne pas :
total 220
drwxr-xr-x. 6 JP38C44N users 4096 Sep 19 19:25 .
drwxr-xr-x. 55 root root 4096 Nov 4 2024 ..
-rw------- 1 JP38C44N users 68412 Sep 19 19:13 .bash_history
-rw-r--r--. 1 JP38C44N users 18 Jun 20 2022 .bash_logout
-rw-r--r--. 1 JP38C44N users 141 Jun 20 2022 .bash_profile
mais
total
220
drwxr-xr-x.
6
JP38C44N
users
4096
Sep
19
19:25
.
drwxr-xr-x.
55
root
root
4096
Nov
4
2024
..
.......... la suite
Oui le séparateur est le retour chariot mais aussi l'espace, la tabulation...
While
While fait une itération, non pas sur une liste de mots mais sur des lignes.
Dans le même esprit que pour le for ci dessus:
# Solution 1
while read line; do
echo -n "$line "
done <<< "$(seq 1 10)"
# Solution 2
seq 1 10 | while read line; do echo -n "$line "
Je ne sais pas laquelle est la plus moche (ou la moins laide) mais les eux donnent :
1 2 3 4 5 6 7 8 9 10