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 :

Test erreur : [: 10: =: argument expected


Sujet :

Linux

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Par défaut Test erreur : [: 10: =: argument expected
    Pourquoi bash me renvoie cette erreur :
    [: 10: =: argument expected

    Voci mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh
    FICHIER=toto.txt
    for var in `cat $FICHIER`
            do
                    if [ $var = `echo $var | grep ^#` ] ; then
                      echo "$var est un commentaire"
                    else
                      echo "$var n'est pas un commentaire"
                    fi
             done
    toto.txt contient
    #commentaire
    /etc
    /lib

    Merci de votre aide

  2. #2
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par Fluxy
    Pourquoi bash me renvoie cette erreur :
    [: 10: =: argument expected

    Voci mon code

    [CODE]#!/bin/sh
    FICHIER=toto.txt
    for var in `cat $FICHIER`
    do
    if [ $var = `echo $var | grep ^#` ] ; then
    .../...

    Si tu utilises le shell bash, pourquoi mettre #!/bin/sh en début de script !

    Pour un problème de ce genre, pense à utiliser le mode verbose avec "set -x"

    Tu fais un test consistant à comparer la variable $var avec le résultat d'une opération.
    Si le résultat de cette opération est nul, on se retrouve avec le test suivant :
    if [ $var = ] ; then
    D'où le message d'erreur reçu...

    Pour éviter ça, 2 solutions :

    1. if [ $var = "`echo $var | grep ^#`" ] ; then
    2. if [[ $var = `echo $var | grep ^#` ]] ; then
    La 2ème est meilleure car elle évite d'ajouter des double-quotes partout.

    Avec ça, le shell comprend : if [ $var = " " ] ; then

    Bonne soirée.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Par défaut
    Bonjour,

    Merci pour cette explication.

    Mais comment faire pour que le for ne tienne pas compte du séparateur espace ?

    Parceque si sur une ligne je met

    #Mon Commentaire

    Le for var traiter #Mon en commentaire, mais pas Commentaire

    Bonne journée

  4. #4
    Membre Expert

    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
    Par défaut
    car on ne lit pas un fichier ligne par ligne avec le for ..... mais avec le while.
    le $(cat fichier) separe les "mots" au sens unix du terme donc avec les separateur unix soit : blanc tabulation et cariage return.

    La reponse est dans dans l'autre tread que que as ouverte en "linux shell" !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Par défaut
    Je te remercie et te souhaite une agréable journée.

    ++

    Fluxy__

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

Discussions similaires

  1. Erreur d'argument dans une fonction
    Par rouliane dans le forum MATLAB
    Réponses: 6
    Dernier message: 12/12/2006, 11h52
  2. Erreur supplied argument is not a valid MySQL resource
    Par abidi_niz dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 06/09/2006, 13h26
  3. mysqli_num_rows() --> erreur d'argument
    Par Invité dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 26/08/2006, 17h38
  4. Erreur d'argument avec runqq
    Par janviech dans le forum Fortran
    Réponses: 3
    Dernier message: 11/08/2006, 09h19
  5. Erreur "Runaway argument"
    Par Doom dans le forum Erreurs - Avertissements
    Réponses: 2
    Dernier message: 02/06/2006, 15h29

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