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

Shell et commandes GNU Discussion :

Probleme avec while read


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut Probleme avec while read
    Bonjour,

    Dans un ficher j'ai une liste de chemin d'accès pour d'autre fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    toto/toto1/
    toto/toto2/
    ...
    et je cherche à récupérer dans une variable ce chemin

    pour ça j'utilise la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    more +2 geom_to_check | while read $line
    do
    fichier_test=$line
    done
    Quand j'exécute le code j'ai ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read: « screening_1/screening_00_00 » : identifiant non valable
    je comprends pas l'erreur, est ce que c'est parce qu'il y a un slash et un underscore qu'il y a un problème si oui j'ai essayé de trouvé une solution en rajoutant avant afin qu'il prenne la fin de la ligne comme séparateur de champs mais ça marche pas.

    Quelqu'un aurait il une solution merci.

  2. #2
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 20
    Par défaut
    Enleve le $ sur la ligne du while

    "more +2 geom_to_check | while read line"

  3. #3
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Salut.

    T'as essayé avec autre chose que more +2 ?
    Sinon, avec un for ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in `commande`
    do
          # traitements avec $i
    done
    Cordialement,
    Idriss

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut
    le more +2 c'est parce que je ne veux pas de la première ligne.
    Merci c'est effectivement le $ligne qui posait problème.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut
    Alors maintenant j'ai un autre soucis, il s'arrête pas à la fin du fichier.

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Toujours avec while ?

    Si oui tu peut faire comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    more +2 fichier | while read ligne
    do
        if [ "$ligne" = "" ]
        then
            exit
        else
            # traitements
        fi
    done
    Mais je pense que la boucle for serait plus adaptée (car l'écriture serait plus légère).

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut
    Bah au début c'est ce que je voulais faire utiliser for mais je voyait pas comment,

    en fait pour voir le problème dans l'ensemble :

    J'ai des fichiers qui contiennent des géométries et j'ai un script qui évalue si les géométries sont les mêmes.
    Donc dans un premier temps le script vérifie que le calcul a convergé si c'est le cas il écrit dans un fichier tout les chemins pour les job achevé correctement.

    Donc j'ai un fichier avec toutes les géométries que je veux comparer entre elle. je connais le nombre de ligne puisque j'ai créé le fichier.
    Ce que j'arrive pas à faire c'est
    Prendre la première ligne comme ref
    pour toutes les autres lignes du fichier je fais la comparaison des géométries pareil pas pareil.
    et je fais un fichier qui contient toutes celles qui ne sont pas semblable à la première ligne.
    A partir de ce nouveau fichier je veux refaire l'étape précédente.

    J'espère que l'explication est claire.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Gérant infopsylon
    Inscrit en
    Juin 2010
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Gérant infopsylon
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2010
    Messages : 215
    Par défaut
    Bonjour,

    Tu ne peux pas utiliser ton while read de cette manière en ligne de commande après un |.

    Essais avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    commande |{ while read line ; do echo "$line" ; done }

    Lilian.

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

Discussions similaires

  1. Probleme avec while
    Par shomke dans le forum Général Python
    Réponses: 3
    Dernier message: 01/04/2009, 09h34
  2. probleme avec while Perl
    Par imorum dans le forum Langage
    Réponses: 2
    Dernier message: 21/01/2007, 19h03
  3. Problème avec while et paramètres
    Par mittim dans le forum Linux
    Réponses: 4
    Dernier message: 08/08/2006, 10h47
  4. Probleme avec WHILE
    Par beb30 dans le forum C
    Réponses: 14
    Dernier message: 05/04/2006, 14h40
  5. [langage] problème avec fonction read
    Par domidum54 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2004, 20h42

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