Arrêter une boucle pour un questionnaire ?

Pouzy -  
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,

Je suis en train de buter sur quelquechose de très bête. En fait, j'entre dans une boucle (disons par exemple une boucle infinie) et je veux poser une question à l'user. Mon problème est que ma boucle ne s'arrête pas, elle continue !!

Exemple :

while true
do
read var
case $var in
"1") echo "c'est 1 !"
break;;
"2") echo "C'est 2 !"
break;;
*) echo "C'est autre chose !" 
break;;
esac
done


En fait, j'aimerais que la boucle s'arrête pour poser la question et dans mon script elle continue et me dit "C'est autre chose"...

Quelqu'un aurait-il une idée ?

Merci :)

3 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,
#! /bin/bash

while true
do
echo "Entrez 1 ou 2"
read var
case $var in
"1") echo "c'est 1 !"
break;;
"2") echo "C'est 2 !"
break;;
*) echo "Vous avez tapé autre chose !"
continue;;
esac
done
;-))
0
Pouzy
 
Coucou et merci de ta réponse,

je ne vois pas trop l'apport en fait, à part une question d'affichage du menu, ça ne résoud pas le problème.
Le continue n'est pas obligatoire (peut être plus propre) sachant que le *) est en fin de boucle il repart.

En fait mon souci est que ma boucle ne s'arrête pas pour demander à l'utilisateur d'entrer quelquechose, elle continue toute seule et met le choix par défaut ! Quelqu'un a déjà eu ce symptome ? (peut être est-ce lié a autre chose dans mon code que cette simple boucle résumée, ce n'est pas du tout ça a l'orgine mais c'était pour expliquer le problème. )

Merci !
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Avec le code que je t'ai mis au-dessus voilà le résultat que j'ai chez moi :
[tmpfs]$ ./pouzy.sh
Entrez 1 ou 2
3
Vous avez tapé autre chose !
Entrez 1 ou 2
k
Vous avez tapé autre chose !
Entrez 1 ou 2
1
c'est 1 !
[tmpfs]$
Tant que je ne rentre pas "1" ou "2", j'affiche un message d'erreur et la boucle repart jusqu'à ce que je rentre une des deux valeurs attendues et là le script s'arrête.

Si ça marche pas chez toi c'est que le problème est ailleurs :-\
0