[shell] affectation de variable

Résolu/Fermé
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 - 12 nov. 2008 à 11:58
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 12 nov. 2008 à 19:25
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 mercredi 12 novembre 2008 Statut Membre Dernière intervention 13 novembre 2008
12 nov. 2008 à 12:18
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 jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
12 nov. 2008 à 12:25
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 jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
12 nov. 2008 à 12:33
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 mercredi 12 novembre 2008 Statut Membre Dernière intervention 13 novembre 2008
12 nov. 2008 à 12:34
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
12 nov. 2008 à 19:25
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