Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 mad

Une idée ?

D'avance, merci tongue

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 !!! big_smile

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