[BASH] parser un fichier

parser un fichier [BASH] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 27-04-2003 à 12:06:37    

Alors voila, j'ai un fichier dont les entrées se présentes comme ça :
<nom>=<valeur>
Par exemple : toto=foo
 
J'aimerais pouvoir a partir d'un script bash récupérer ses information et au final avoir une variable $<nom> qui a comme valeur <valeur>.
 
j'ai essayer de faire un truc comme ça :
 
 

Code :
  1. for i in  `cat .genuprc` ; do $i ; done


 
Mais a chaque fois le résultat est le suivant
 

Code :
  1. bash: rep=/root/.Gentoo-Update/: No such file or directory
  2. bash: logname_prefix=Gentoo-Update: command not found


 
Alors que si je met une commande shell classique ( j'ai pris la commande date comme exemple) ca marche trés bien :
 

Code :
  1. [ ~/Script/Gentoo_Update/dev ]-[127]: cat .genuprc
  2. date
  3. rep=/root/.Gentoo-Update/
  4. logname_prefix=Gentoo-Update
  5. [ ~/Script/Gentoo_Update/dev ]-[0]: for i in  `cat .genuprc` ; do $i ; done
  6. Sun Apr 27 12:03:43 CEST 2003
  7. bash: rep=/root/.Gentoo-Update/: No such file or directory
  8. bash: logname_prefix=Gentoo-Update: command not found
  9. [ ~/Script/Gentoo_Update/dev ]-[127]:

 
 
Si quelq'un pouvait m'expliquer !
Merci

Reply

Marsh Posté le 27-04-2003 à 12:06:37   

Reply

Marsh Posté le 27-04-2003 à 12:23:12    

et ça :

Code :
  1. for i in  `cat .genuprc` ; do export $i ; done


 
ça marche pas ?


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 27-04-2003 à 12:26:15    

Mjules a écrit :

et ça :

Code :
  1. for i in  `cat .genuprc` ; do export $i ; done


 
ça marche pas ?


 
Ok ca marche a la perfection !!
Une explication du pkoi le mien marchait pas ?

Reply

Marsh Posté le 27-04-2003 à 13:46:47    

Ça ne marchait pas parce que le script essayait d'exécuter la commande "rep=val", sans chercher à faire l'affectation (c'est normal comme comportement par défaut avec Bash, mais je ne peux pas préciser)
 


# i="machin=truc"
# $i
-bash: machin=truc: command not found
# i="date"
# $i
Sun Apr 27 12:00:01


 
 Par contre, si le fichier ne comporte que des associations "nom=valeur", n'est-il pas préférable d'utiliser "source" plutôt qu'une boucle for, souvent spécifique à un shell ? Ça permet en plus de mettre des commentaires et des lignes vides dans ce fichier de config ".genuprc".

# source .genuprc


 


Message édité par unk00 le 27-04-2003 à 13:51:42
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed