[shell] affectation de variable

Résolu
tlep Messages postés 597 Statut Membre -  
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 :-)
Configuration: Windows XP
Firefox 3.0.3

5 réponses

  1. alx13 Messages postés 9 Statut Membre
     
    Si tes données sont bien ligne à ligne
    un simple remplacement de ta virgule par = devrait suffire.

    sed 's/,/=/g' ton_fichier
    0
  2. tlep Messages postés 597 Statut Membre 118
     
    Oui, mais çà ne va pas affecter à la variable shell "A" la valeur "toto", çà va afficher le résultat :-()
    0
  3. tlep Messages postés 597 Statut Membre 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
  4. alx13 Messages postés 9 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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