« Bash basic » : différence entre les versions
Aller à la navigation
Aller à la recherche
(Page créée avec « == Les boucles == === Boucle "for" === C'est la base on boucle sur une liste.<syntaxhighlight lang="bash"> for i in 1 2 3 4 5 do echo -n "$i " done </syntaxhighlight>écrit : 1 2 3 4 5 la liste peut être le résultat d'une commande:<syntaxhighlight lang="bash"> for i in $(seq 1 2 20) do echo -n "$i " done </syntaxhighlight>nous donne : 1 3 5 7 9 11 13 15 17 19 Ou encore :<syntaxhighlight lang="bash"> for i in `ls -a` do echo $i; done </syntaxhighlight>d... ») |
mAucun résumé des modifications |
||
| Ligne 83 : | Ligne 83 : | ||
</syntaxhighlight>Je ne sais pas laquelle est la plus moche (ou la moins laide) mais les eux donnent : | </syntaxhighlight>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 | 1 2 3 4 5 6 7 8 9 10 | ||
On peut aussi faire la classique boucle infinie:<syntaxhighlight lang="bash"> | |||
while [ 1 ] | |||
do | |||
echo -en "\r$(date +%H:%M:%S)" | |||
sleep 1 | |||
done | |||
</syntaxhighlight>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! | |||
Version du 19 septembre 2025 à 17:59
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
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!