[shell] affectation de variable

Résolu
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

j'ai un fichier comme suit :

A,toto
B,tata
Z,titi

Je voudrais le parser de manière à affecter des variables SHELL comme suit:

A="toto"
B="tata"
Z="titi"

Le souci, c'est qu'en parsant le fichier, je peux récupérer des valeurs genre "A", "toto", etc... Or moi je voudrais affecter à une variable "A" la valeur "toto", "B" la valeur "tata", etc...

J'ignore si c'est possible ?

Merci :-)

5 réponses

alx13 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Si tes données sont bien ligne à ligne
un simple remplacement de ta virgule par = devrait suffire.

sed 's/,/=/g' ton_fichier
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
Oui, mais çà ne va pas affecter à la variable shell "A" la valeur "toto", çà va afficher le résultat :-()
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
En fait j'ai trouvé:

while read ligne;do
eval $(echo $ligne|cut -d"," -f1)=$(echo $ligne|cut -d"," -f2)
done < mon_fichier
0
alx13 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
désolé je pensais que tu voulais les changer dans ton script.

puis réexecuter le script modifier et là...
tes variables seraient alimentées, un peu bourrin comme solution :p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,
[tmpfs]$ cat fich
A,toto
B,tata
Z,titi

[tmpfs]$ cat foo.sh
#! /bin/bash

eval $(sed 's/,/=\"/;s/$/\"/' fich)

echo "A = $A"
echo "B = $B"
echo "Z = $Z"

[tmpfs]$ ./foo.sh
A = toto
B = tata
Z = titi

[tmpfs]$
;-))
0