Recuperer ligne de fichier dans variables séparées

Recuperer ligne de fichier dans variables séparées - Shell/Batch - Programmation

Marsh Posté le 14-04-2009 à 21:15:34    

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

Reply

Marsh Posté le 14-04-2009 à 21:15:34   

Reply

Marsh Posté le 15-04-2009 à 11:24:38    

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

Reply

Marsh Posté le 15-04-2009 à 12:00:35    

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.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed