Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1419 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Recuperer ligne de fichier dans variables séparées

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recuperer ligne de fichier dans variables séparées

n°1872997
tomtom293
Posté le 14-04-2009 à 21:15:34  profilanswer
 

Bonjour à tous,
 
Voila j'ai un fichier test.txt de 6 lignes, qui se presente sous cette forme:
TOTO
TITI
TATA
TONTON
PEPE
MEME
 
Et en fait je voudrai réaliser un script shell qui met chaque ligne dans un variable.
Donc en gros, j'aurai $1=TOTO,$2=TITI,...$6=MEME
J'ai essaye avec une boucle while, mais le pb est que je ne recupere que la derniere ligne...
Pouvez vous m'aider...?
Merci bcp à tous et a toutes
Tom

mood
Publicité
Posté le 14-04-2009 à 21:15:34  profilanswer
 

n°1873188
Profil sup​primé
Posté le 15-04-2009 à 11:24:38  answer
 

Salut
 
Il y a des tas de solution, tu peux faire une boucle for (for i in `cat test.txt` ...) et mettre tes valeurs dans un tableau, changer l'IFS et utiliser set, etc

n°1873237
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 15-04-2009 à 12:00:35  profilanswer
 

Oui un tableau ça ira trankilou :)

 
tomtom293 a écrit :

Bonjour à tous,
J'ai essaye avec une boucle while, mais le pb est que je ne recupere que la derniere ligne...

 

C'est une histoire de subshell ça peut-être, dans le doute... :

 

Dans le script suivant :

   
#!/bin/bash
I=-1
cat file.txt | while read REF_LINE; do
    (( I++ ))
done
echo "I = $I"

 

J=-1
while [ $J -lt 100 ]; do
    (( J++ ))
done
echo "J = $J"

 

L'affichage donne :


I = -1
J = 100

 

Pourquoi ? I n'est pas exporté en dehors de la boucle.
Lors du "cat | while read", le pipe a créé un subshell. I est modifiée
dans ce subshell, mais jamais dans le shell courant.
Il faut donc retenir qu'un pipe => un subshell, car par définition "un
pipe est un flux de données à sens unique entre deux processus"

 

D'où le script suivant pour résumer la situation :


#! /bin/sh
# variable I du processus (père)
I=0
cat $1 |      # Le pipe arrive
   {
    # ici c'est le processus (fils)
    # le contenu de la variable I (père) a été exporté dans la variable I (fils)
   }
# on est de retour dans le processus père
# on retrouve donc I (père) et pas I (fils)



Message édité par Xavier_OM le 15-04-2009 à 12:02:33

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Recuperer ligne de fichier dans variables séparées

 

Sujets relatifs
Recuperer / afficher élément sur evenement onclickne conserver que la dernière ligne d' un fichier texte
récupérer le nom des colonnes d'une bddProtéger l'accès à un fichier JS
[C] Parser un fichier texteremplacement de chaine dans un nom de fichier.
Acceder à une class à partir d'un autre fichierRécupèrer l'extention d'un fichier en php
Plus de sujets relatifs à : Recuperer ligne de fichier dans variables séparées


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR