« Bash basic » : différence entre les versions
Aller à la navigation
Aller à la recherche
mAucun résumé des modifications |
m (→While) |
||
| Ligne 78 : | Ligne 78 : | ||
# Solution 2 | # Solution 2 | ||
seq 1 10 | while read line; do echo -n "$line " | seq 1 10 | while read line; do echo -n "$line " done | ||
Version actuelle datée du 19 septembre 2025 à 18:18
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 " done
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
On peut aussi faire la classique boucle infinie:
while [ 1 ]
do
echo -en "\r$(date +%H:%M:%S)"
sleep 1
done
le [1] indique que la condition du while est toujours vrai.
Ensuite on écrit la date avec un echo :
- -e pour lui dire d'interprété les caractères étendus dont \r
- -n pour lui dire de ne pas ajouter un retour à la ligne apres la chaîne écrite
Le programme nous fait une jolie horloge digitale!