[shell] affectation de variable

[Résolu/Fermé]
Signaler
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
-
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
-
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

Messages postés
9
Date d'inscription
mercredi 12 novembre 2008
Statut
Membre
Dernière intervention
13 novembre 2008

Si tes données sont bien ligne à ligne
un simple remplacement de ta virgule par = devrait suffire.

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

while read ligne;do
eval $(echo $ligne|cut -d"," -f1)=$(echo $ligne|cut -d"," -f2)
done < mon_fichier
Messages postés
9
Date d'inscription
mercredi 12 novembre 2008
Statut
Membre
Dernière intervention
13 novembre 2008

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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 872
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]$
;-))