[shell] affectation de variable

Résolu
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 :-)
Configuration: Windows XP
Firefox 3.0.3

5 réponses

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

    sed 's/,/=/g' ton_fichier
    0
    1. Oui, mais çà ne va pas affecter à la variable shell "A" la valeur "toto", çà va afficher le résultat :-()
      0
      1. En fait j'ai trouvé:

        while read ligne;do
        eval $(echo $ligne|cut -d"," -f1)=$(echo $ligne|cut -d"," -f2)
        done < mon_fichier
        0
        1. 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
          1. Modérateur
            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