Script shell - while / until

Résolu
charline159 Messages postés 216 Statut Membre -  
charline159 Messages postés 216 Statut Membre -
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?!

1 réponse

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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

    0
    1. charline159 Messages postés 216 Statut Membre 1
       
      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...
      0
      1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > charline159 Messages postés 216 Statut Membre
         
        Regardes bien mon exemple, il y a un caractère en moins ;-))
        0
    2. charline159 Messages postés 216 Statut Membre 1
       
      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.
      0
      1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > charline159 Messages postés 216 Statut Membre
         
        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.
        0
    3. charline159 Messages postés 216 Statut Membre 1
       
      C'est précisément ce que je voulais savoir! Merci pour ta réponse et tes explications! :)
      0