#1 Le 16/10/2013, à 17:25
- Dany007
Résolu - Problème avec boucle WHILE dans un script
Bonjour / bonsoir
Je rencontre un problème avec une boucle WHILE dans un script et j'aimerai savoir si quelqu'un pourrais m'aider à solutionner cela svp.
L'erreur en retour en la suivante:
~./exo4
essai 1, votre proposition?d
Bravo, vous avez trouvé en 1 essai(s)
==> C'est-à-dire que la bonne réponse est 'coucou' mais même si je tape n'importe quoi, il me retourne le message "Bravo, vous avez trouvé en 1 essai(s)".
==> Pour moi, le problème viendrait sans doute de la ligne : if [ $trouve=0 ] ; (juste après le done).
==============================
Voici le script:
bonnereponse=coucou
trouve=0
essai=1
while [ $essai -le 5 -a $trouve -eq 0 ] ;
do
echo -n "essai $essai, votre proposition ?"
read reponse
if [ $reponse=$reponse ] ;
then
trouve=1
else
$essai=$(($essai+1))
done
if [ $trouve=0 ] ;
then
echo "Bravo, vous avez trouve la réponse en $essai (s)"
else
echo "Désolé, vous avez perdu"
fi
Dernière modification par Dany007 (Le 16/10/2013, à 19:19)
Hors ligne
#2 Le 16/10/2013, à 17:38
- pingouinux
Re : Résolu - Problème avec boucle WHILE dans un script
Bonjour,
if [ $reponse=$reponse ] ;
Tu n'utilises pas bonnereponse.
D'autre part, le test doit se faire ainsi (les " " sont nécessaires si les variables contiennent des espaces) :
if [ "$reponse" = "$bonnereponse" ] ;
Remarque :
$essai=$(($essai+1))
devrait s'écrire
essai=$(($essai+1))
et peut être remplacé par
((essai++))
Ajouté :
Il manque fi à la fin du 1er if.
Le test final sur trouve est inversé.
Dernière modification par pingouinux (Le 16/10/2013, à 17:46)
Hors ligne
#3 Le 16/10/2013, à 17:56
- Dany007
Re : Résolu - Problème avec boucle WHILE dans un script
Bonjour Pingouinux
Un (grand) merci à toi parce que je me 'casse' la tête depuis 2 heures là-dessus!!!
Effectivement en mettant entre guillemets les variables et en remplaçant $essai=$(($essai+1)) par ((essai++)), cela fonctionne mieux.
Cependant (hélas oui), lorsque je lance le programme, il me retourne ceci:
~./exo4
essai 1, votre proposition ?c
essai 2, votre proposition ?c
essai 3, votre proposition ?c
essai 4, votre proposition ?c
essai 5, votre proposition ?c
Bravo, vous avez trouvé en 6 essais(s).
==> C'est-à-dire qu'il ne reconnait pas le fait que je n'ai pas trouvé la bonne réponse
Une idée ?
D'avance, merci
Hors ligne
#4 Le 16/10/2013, à 18:02
- pingouinux
Re : Résolu - Problème avec boucle WHILE dans un script
Comme je te l'ai dit dans mon message précédent, le test final est inversé.
Ce doit être :
if [ $trouve -ne 0 ] ;
Hors ligne
#5 Le 16/10/2013, à 18:02
- Dany007
Re : Résolu - Problème avec boucle WHILE dans un script
J'oubliai : j'ai bien remis le fi à la fin du 1er if.
Hors ligne
#6 Le 16/10/2013, à 18:03
- Dany007
Re : Résolu - Problème avec boucle WHILE dans un script
Félicitation !!!
Hors ligne
#7 Le 16/10/2013, à 18:04
- Dany007
Re : Résolu - Problème avec boucle WHILE dans un script
Écoutes, je suis débutant et j'ai planché toute la journée sur deux autres problèmes, est-ce que je peux te les soumettre ici stp ?
Hors ligne
#8 Le 16/10/2013, à 19:11
- pingouinux
Re : Résolu - Problème avec boucle WHILE dans un script
Oui si c'est un problème voisin, sinon tu peux ouvrir une autre discussion pour le nouveau sujet. Dans ce cas, tu modifies le premier message de cette discussion, et tu ajoutes [résolu] dans le titre.
Hors ligne
#9 Le 16/10/2013, à 19:18
- Dany007
Re : Résolu - Problème avec boucle WHILE dans un script
Ok, merci, j’attendais ta réponse. Je vais clore ce sujet.
Je vais te poster cela dans l'heure qui suit.
Merci beaucoup.
Hors ligne