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 :

Boucle while et lecture de fichier


Sujet :

Linux

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut Boucle while et lecture de fichier
    bonjour à tous,

    C'est surment un problème tout bête, mais ça m'ennuie drôlement.

    Bref, voila la bête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #lecture fichier
    cat dossier/dossier/fichier.txt | while read ligne
    do
    LISTTXT="test-"$ligne".txt"
    echo $LISTTXT
    done
    Et il me renvoie des trucs genre:

    .txtvariable

    or je souhaiterais qu'il est l'allure de test-variable.txt

    La lecture dans le fichier est bonne, mais pourquoi renvoie-t-il des variable de ce type? Comment concaténer correctement cette variable? Est-ce qu'un nom de variable qui emprunte un nom d'une autre variable pose problème???

    à l'aide.
    Merci

  2. #2
    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
    deja plus simple et plus conforme pour la lecture d'un fichier via while:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while read ligne
    do
       LISTTXT="test-$ligne.txt"
       # ou pour lever toutes ambiguités
       LISTTXT="test-${ligne}.txt"
       echo $LISTTXT
    done < dossier/dossier/fichier.txt

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    Salutation MarcG,
    mais le problème reste le même, ce qui est étrange c'est que ce que je met derrière $ligne se retrouve devant et écrase les valeurs définies précédemment, dans cette exemple, j'obtiens:

    .txt-ligne
    au lieu de
    test-ligne.txt
    Si j'avais mis .marchepas au lieu de .txt, j'aurais:
    .marchepas (même les valeurs de ligne sont écrasé)

    Je comprend pas.

  4. #4
    Membre confirmé Avatar de herzleid
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 393
    Points : 509
    Points
    509
    Par défaut
    Chez moi ça marche en changeant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #lecture fichier
    cat dossier/dossier/fichier.txt | while read ligne
    do
    LISTTXT="test-"$ligne".txt"
    echo $LISTTXT
    done
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #lecture fichier
    cat dossier/dossier/fichier.txt | while read ligne
    do
    LISTTXT="test-"${ligne}".txt"
    echo $LISTTXT
    done

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    Bha je comprend toujours !

    Le problème est que tous ce que je mets après la variable ne se concatène pas et ecrase les données déjà en place. Je vais tous reprendre à zero.

  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
    peut tu donner quelque lignes du fichier d'entrée ?
    quel shell / configuration utilise tu ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    Bien, develeppons alors le problème:
    dans le fichier, nous avons des adresses, exemple de fichier:

    192.168.0.1
    192.168.0.2
    192.168.0.3
    ...
    le but est de créer autant de fichier
    "test-192.168.0.1.cfg" que d'adresses, j'avais mis en exemple en .txt, mais ça n'a pas d'importance.

    Je croyais faire ça en 10 secondes, et j'en suis à ma deuxième journée.

    sinon, je travaille avec bash (j'espère que c'est ça que tu demandes)
    #! /bin/sh en début de fichier

    Au risque de me répéter, je ne peut rien mettre après l'adresse, ce qui correspond à l'extension donc c'est plutot embétant et j'obtiens:
    .cfg-192.168.0.1
    test-192.168.0.1.cfg <-ce que je voudrais (remarquer que .cfg ecrase la variable)
    voila, je crois que tout est dit.

  8. #8
    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
    il y a effectivement un probleme, cela fonctionne tout a fait correctement chez moi. a tu essaye sous ksh par exemple ?
    ou en lancant ton script (sans #! /bin/sh) via la commande :
    bash monscript ?

    et tu certain d'etre sous bash ?
    (ls -l /bin/sh) qui devrait etre un lien vers bash ....

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    salut,

    ou en lancant ton script (sans #! /bin/sh) via la commande :
    bash monscript ?
    ->même chose

    et tu certain d'etre sous bash ?
    (ls -l /bin/sh) qui devrait etre un lien vers bash
    ->sur, j'obtiens bien le lien

    Serais-ce un bug? Je tourne sous une fedora core 2, vu que ça date un peu...

    Mais ça n'arrange pas mes affaires, j'ai pourtant tout vérifier, de la plus petite virgule au chemin de fichier, .... je vois pas pourquoi ça ne fonctionne pas. De plus sous le même programme, lorsque j'essaie de concaténer deux autres variables, ça fonctionne! c'est uniquement lorsque je récupère les données du fichier qu'il ne veut plus concaténer et les écrase...
    Bon, je vais cherché la corde et la tabouret...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    je viens de comprendre!

    Cela vient du fichier en question. Le problème est qu'il a été crée à partir de script php, et donc pour terminer une ligne et faire un saut de ligne j'ai du faire un \r\n, ce qui peut perturbé la lecture de ce fichier.

    Mais cette affaire reste cependant très louche, à suivre...

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    ah oui! j'oublié.

    Un grand merci à ceux qui se sont donné la peine de regarder et de répondre à un problème qui ne pouvait être résolu. Du moins reste un mystère.

  12. #12
    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
    Ahhhhhhh fichier creer a partir de php .... il faut tout dire .. effectivement c'est donc un problème de "IFS"

  13. #13
    Membre confirmé Avatar de herzleid
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 393
    Points : 509
    Points
    509
    Par défaut
    Je comprends mieux (surtout que j'avais fait juste un copié collé pour tester ton code !)

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

Discussions similaires

  1. Boucle while en lecture..
    Par nymus7 dans le forum Langage
    Réponses: 4
    Dernier message: 01/12/2008, 14h29
  2. calcul et boucle sur lecture de fichier
    Par marinaetsonchat dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 22/11/2007, 15h15
  3. boucle while qui ne s'arrete pas à la lecture d'un zero
    Par malikoo dans le forum Général Python
    Réponses: 14
    Dernier message: 04/07/2007, 10h48
  4. problème dans boucle for de lecture de fichier ini
    Par chourmo dans le forum Delphi
    Réponses: 3
    Dernier message: 06/07/2006, 09h31
  5. Réponses: 16
    Dernier message: 03/11/2005, 19h33

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