Scripts : les boucles
for sur une liste, des jokers ou "$@", while et until, while read pour lire un fichier ligne à ligne, break et continue : dérouler une boucle et éviter le piège des noms qui contiennent des espaces.
- 25 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
Quelques cartes du deck
Boucle for : de quoi s'agit-il ?
Voir la réponse
Boucle qui exécute son corps une fois par mot d'une liste fixée au départ, en rangeant ce mot dans sa variable à chaque tour.
for i in 1 2 3fait trois tours ;for i in $(seq 3 6)en fait quatre, avec3,4,5puis6.Qu'affiche ce script ?
```bash
i=0
while [ $i -lt 5 ]; do
i=$((i + 2))
done
echo $i`6542,4puis6
Voir la réponse
6iprend 0, 2, 4 puis 6. La condition n'est testée qu'au début de chaque tour : à 4 elle est vraie,ipasse à 6, et au tour suivant elle est fausse.Le corps d'une boucle
forest placé entre … et ….Voir la réponse
Le corps d'une boucle
forest placé entre do et done.doouvre le corps etdonele ferme, pourfor,whilecommeuntil.Boucles while et until : de quoi s'agit-il ?
Voir la réponse
Boucles pilotées par une commande de condition : l'une répète tant qu'elle rend 0, l'autre répète jusqu'à ce qu'elle rende 0.
while [ $n -gt 0 ]etuntil [ $n -le 0 ]décrivent la même boucle : seule la formulation de la condition s'inverse.Un script de renommage plante sur « mon rapport.txt », traité comme deux fichiers. Il commence par
for f in $(ls *.txt). Quelle correction suffit ?- Écrire
for f in $(ls -1 *.txt), qui met un nom par ligne - Remplacer
forparwhile, qui ne découpe pas les mots - Mettre des apostrophes :
for f in '$(ls *.txt)' - Écrire
for f in *.txtet citer"$f"dans le corps de la boucle
Voir la réponse
Écrire
for f in *.txtet citer"$f"dans le corps de la boucleLe découpage vient du résultat de
$(ls)relu par le shell. Le joker, lui, fournit les noms entiers. Citer"$f"évite un second découpage dansmv.- Écrire