Script shell - while / until
Résolu
charline159
Messages postés
216
Statut
Membre
-
charline159 Messages postés 216 Statut Membre -
charline159 Messages postés 216 Statut Membre -
Bonjour!
Avec ce script...
...j'ai voulu faire un test avec until, de manière à ce que la boucle continue jusqu'à ce que la réponse soit différente de oui. J'ai donc remplacé
Mais depuis, quand j'éxecute le script, il ne se passe rien. Pourquoi?!
Avec ce script...
while [ "$reponse" != 'oui' ]
do
read -p 'Dites oui : ' reponse
done
...j'ai voulu faire un test avec until, de manière à ce que la boucle continue jusqu'à ce que la réponse soit différente de oui. J'ai donc remplacé
whilepar
until.
Mais depuis, quand j'éxecute le script, il ne se passe rien. Pourquoi?!
1 réponse
-
Salut,
La réponse est dans ta question et ton raisonnement : de manière à ce que tant que l'on dit oui, ça continue.
tant que c'est pourwhile
until
c'est jusqu'à ce que…
until [ "$reponse" = 'oui' ] do read -p 'Dites oui : ' reponse done
-
-
Dans ton exemple, la boucle continue jusqu'à ce que l'utilisateur dise oui.
Ce que je cherche à faire est justement le contraire: je veux que la boucle continue jusqu'à ce que l'utilisateur dise autre chose que oui.- Toute la subtilité tient dans le fait qu'une condition
while
exécute une boucle tant que la condition est vraie, et ce, jusqu'à ce que la condition devienne fausse.
Une conditionuntil
, c'est exactement le contraire, la boucle est exécutée tant que la condition est fausse, jusqu'à ce qu'elle devienne vraie.
Pour en revenir à ta conditionuntil [ "$reponse" != 'oui' ]
, ben la boucle n'est jamais exécutée, puisque dès le départ, la condition est vraie, la variable "$reponse" est vide, donc la condition[ ' ' != 'oui' ]
étant respectée, on sort de la boucle et le script s'achève.
Si tu veux que ton script t'affiche quelque chose, il faut initialiser ta variable réponse à oui.
#! /bin/bash reponse='oui' until [ "$reponse" != 'oui' ] do read -p 'Dites oui : ' reponse done
La conditionuntil
est très peu utilisée. La plupart du temps c'est while qui est utilisée.
-
-