[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. 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
    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. 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. Oui, mais çà ne va pas affecter à la variable shell "A" la valeur "toto", çà va afficher le résultat :-()
          0
          1. Si tes données sont bien ligne à ligne
            un simple remplacement de ta virgule par = devrait suffire.

            sed 's/,/=/g' ton_fichier
            0