Signaler

Script shell - while / until [Résolu]

Posez votre question charline159 63Messages postés lundi 14 août 2017Date d'inscription 6 septembre 2017 Dernière intervention - Dernière réponse le 18 août 2017 à 10:38 par charline159
Bonjour!
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é
while
par
until
.

Mais depuis, quand j'éxecute le script, il ne se passe rien. Pourquoi?!


Utile
+0
plus moins
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 pour
while

until
c'est jusqu'à ce que

until [ "$reponse" = 'oui' ]
do
        read -p 'Dites oui : ' reponse
done

charline159 63Messages postés lundi 14 août 2017Date d'inscription 6 septembre 2017 Dernière intervention - 17 août 2017 à 19:09
Pardon, je voulais dire: "jusqu'à ce que la réponse soit différente de oui, la boucle continue."

donc j'ai fait:
until [ "$reponse" != 'oui' ]
do
read -p 'Dites oui : ' reponse
done

Mais rien ne se passe...
Répondre
zipe31 35043Messages postés dimanche 7 novembre 2010Date d'inscription ContributeurStatut 10 octobre 2017 Dernière intervention - 17 août 2017 à 19:12
Regardes bien mon exemple, il y a un caractère en moins ;-))
Répondre
charline159 63Messages postés lundi 14 août 2017Date d'inscription 6 septembre 2017 Dernière intervention - 17 août 2017 à 21:19
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.
Répondre
zipe31 35043Messages postés dimanche 7 novembre 2010Date d'inscription ContributeurStatut 10 octobre 2017 Dernière intervention - 18 août 2017 à 07:55
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 condition
until
, 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 condition
until [ "$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 condition
until
est très peu utilisée. La plupart du temps c'est while qui est utilisée.
Répondre
charline159 63Messages postés lundi 14 août 2017Date d'inscription 6 septembre 2017 Dernière intervention - 18 août 2017 à 10:38
C'est précisément ce que je voulais savoir! Merci pour ta réponse et tes explications! :)
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !