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 :

Scripting shell lecture fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Par défaut Scripting shell lecture fichier
    quand je lis un fichier

    fichier.txt :
    balance
    balance2
    balance3
    et que j'affiche la ligne,

    script.sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for line in $(/tmp/fhou/fichier.txt);
    do
    echo $line
    done

    j'obtiens ça...

    /tmp/fhou/fichier.txt[2]: balance:  not found.
    /tmp/fhou/fichier.txt[3]: balance2:  not found.
    /tmp/fhou/fichier.txt[4]: balance3:  not found.
    Pourquoi??

    je souhaite obtenir :

    balance
    balance2
    balance3
    merci d'avance pour vos réponse

  2. #2
    Membre éprouvé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Décembre 2013
    Messages : 70
    Par défaut
    Salut,
    Tu peux faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read line
    do
       echo "$line"
    done < /tmp/fhou/fichier.txt
    Edit :
    Comme tu l'avais fait, tu essaies d'exécuter le fichier /tmp/fhou/fichier.txt

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Si tu veux afficher indépendamment chaque mot de ton fichier, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for line in $( < /tmp/fhou/fichier.txt)
    do
      echo $line
    done
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Salut

    Tu peux faire également

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for line in $( cat /tmp/fhou/fichier.txt);

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Citation Envoyé par houmad91 Voir le message
    j'obtiens ça...

    /tmp/fhou/fichier.txt[2]: balance:  not found.
    /tmp/fhou/fichier.txt[3]: balance2:  not found.
    /tmp/fhou/fichier.txt[4]: balance3:  not found.
    Pourquoi??
    Parce que balance, balance2 et balance3 n'ont pas été trouvés pour exécution.

    Si tu ne veux pas qu'ils soient exécutés, il ne faut pas utiliser une syntaxe qui demande leur exécution.

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    une boucle for, par défaut, ne lisant pas des lignes, il serait peut-être préférable d'utiliser for word in ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par houmad91 Voir le message
    quand je lis un fichier

    fichier.txt :
    balance
    balance2
    balance3
    et que j'affiche la ligne,

    script.sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for line in $(/tmp/fhou/fichier.txt);
    do
    echo $line
    done

    j'obtiens ça...

    /tmp/fhou/fichier.txt[2]: balance:  not found.
    /tmp/fhou/fichier.txt[3]: balance2:  not found.
    /tmp/fhou/fichier.txt[4]: balance3:  not found.
    Pourquoi??
    Bonjour
    Parce que la syntaxe /tmp/fhou/fichier.txt demande l'exécution de chaque ligne se trouvant dans le fichier. Exactement comme quand tu fais chemin/script.sh.
    Peut-être que tu voulais faire for line in $(cat /tmp/fhou/fichier.txt)...

    Accessoirement c'est dangereux de faire un for line in $(flux entrant) car si le flux renvoie des éléments avec espaces, ta boucle itèrera une fois sur le début et une fois sur la fin de l'élément qui ne sera, au final, pas traité. Mieux vaut faire un flux entrant | while read line......
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/01/2014, 14h53
  2. Script PHP -> Lecture fichier + insertion BDD
    Par spartiates59 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 20
    Dernier message: 05/09/2011, 14h02
  3. Script shell purge fichiers
    Par jicaygg dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 02/02/2011, 15h25
  4. Script shell copie fichier en fonction de leur nom
    Par Borowsky dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 09/12/2009, 09h27
  5. Réponses: 7
    Dernier message: 30/05/2006, 14h08

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