IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Problème avec un while...


Sujet :

Linux

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut Problème avec un while...
    bonjour,

    je rencontre un petit soucis avec ma boucle while dans un script sous linux suse 8.2

    j'ai essayé ceci
    while {$x<10} {
    instruction


    }
    ou comme ceci

    while {$x<10}
    do
    instructions
    done

    je rencontre chaque fois soit une erreur de syntaxe soit un erreur disant
    le fichier 10 n'existe pas...
    j'ai essayé de taper tel quel l'exemple donné dans les man pages mais rien n'y fait....

    d'avance merci...

  2. #2
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Là ça va être très dur de t'aider: d'une part on ne sait pas ce que tu veux faire et d'autre part un si petit extrait de code est insuffisant pour se faire une idée de l'endroit ou ça pourrait coincer. Pourrais tu poster un bout de code plus long?

  3. #3
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Bonjour,

    Merci d'encadrer le code avec des balises [ code ] et [ /code ] (à taper sans les blancs). Elles permettent une meilleure lisibilité du code source en respectant l'indentation et l'espacement (entre autres).

    Pour ce qui est de ton problème de while, je ne suis pas sûr du langage que tu utilises ... s'agit-il d'un script bash/sh ?

    Dans ce cas, le < n'est pas pris en compte comme un comparateur, mais comme une redirection des entrées, en fournissant à la commande dont le nom est dans $x un fichier 10 contenant les entrées de l'utilisateur.

    Pour une comparaison numérique, en bash, il vaut mieux utiliser l'opérateur test ([]en abrégé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while [ $x -lt 10 ] ; do
        instructions
    done

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    je sais que je ne suis pas très clair , je n'ai malheureusement pas mon script sous la main, je ne sais donc pas vous le montrer.

    j'utilise bien le bash
    et je souhaite simplement faire une somme de chiffres

    de mémoire ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    echo "entrez le nombre de valeur a additionner"
    read nbre_valeur
    $x = 0
    while {$x<$nbre_valeur}
    {
    echo "entrez un chiffre"
    read $num
    $sum =`expr $sum + $num`
    }
     
    echo $sum
    voila je pense que c'est +- ça.
    j'espère avoir été un poil plus clair...
    je suis débutant... merci de votre aide

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    oups je viens de voir que j'ai oublié de noter l'incrémentation de x

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    de toute manière la syntaxe n'est pas bonne :
    un test sur du numerique se réalise comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (( $x < $nbre_valeur ))
    do 
         (( x = $x + 1 ))
    done
    le '$" dans la commande (( )) n'est pas obligatoire .
    (( )) est une commande donc doit imperativement avoir un caractère blanc apres le (( et avant le ))
    la commande (( )) generera une erreur si les variables utilisée dedans ne sont pas des numerique entier.
    cette syntaxes EST POSIX, le Bash l'utilise ainsi que le KSH et tous shell POSIX.
    la syntaxe -lt ou expr ou test sont du domaine de la prehistoire du shell (mais la bonne compatibilité etant la sous unix....)

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    ok merci beaucoup, je testerai tout ça ce soir chez moi...

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par MarcG
    [...]la syntaxe -lt ou expr ou test sont du domaine de la prehistoire[...]
    Aïe... Ca fout un coup au moral de lire ça...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Probleme UPDATE avec boucle WHILE
    Par iverson_mac dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/06/2007, 17h07
  2. Réponses: 2
    Dernier message: 19/11/2006, 10h54
  3. Réponses: 2
    Dernier message: 17/10/2005, 22h16
  4. [Debutant/WinAPI] Souci avec boucle While et GetMessage()
    Par SnowStyle dans le forum Windows
    Réponses: 11
    Dernier message: 15/10/2005, 19h19
  5. Problème avec Do while rs.EOF
    Par lauraned dans le forum ASP
    Réponses: 12
    Dernier message: 21/05/2004, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo