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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 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
    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 confirmé
    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
    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 chevronné 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
    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 confirmé
    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
    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 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
    peut tu donner quelque lignes du fichier d'entrée ?
    quel shell / configuration utilise tu ?

  7. #7
    Membre confirmé
    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
    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 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
    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 ....

+ 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