TCL : fichier de configuration en shell

bijnok Messages postés 87 Statut Membre -  
bijnok Messages postés 87 Statut Membre -
Bonjour,

j'ai un script tcl qui utilise un fichier de configuration codé en Shell pour se connecter à mysql. Les paramètres de connexion sont dans le fichier de configuration.
Mon problème est que je n'arrive pas à rapatrier les variables du fichier de configuration dans tcl.
Il est hors de question de changer le fichier de configuration en format tcl car il est utilisé par d'autres ressources.

J'ai essayé
set fichier_conf [source ./chemin/du/fichier/de/conf/conf.cfg]


mais une erreur intervient à l'execution parce que tcl essaie de compilé la déclaration des variables qui sont en Shell...

Merci par avance

2 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
je dirais: depuis le shell, appeller le fichier de configuration shell, appeller le script TCL et récupérer les variables d'environnement avec env
0
bijnok Messages postés 87 Statut Membre 12
 
Désolé mais je n'y arrive pas. Le but est de tout faire à partir du script tcl (le tout fait partie d'une application).
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
depuis le tcl, tu veux:
- juste exécuter le script shell ?
- l'exécuter et recupérer dans le tcl des variables du shell ?
- l'exécuter et récupérer dans tcl les sorties du script shell ?

pour exécuter du shell depuis tcl, il faut utiliser exec plutot que source, qui attend du tcl
0
bijnok Messages postés 87 Statut Membre 12
 
Je vais essayer d''éclaircir mes propos.

J'ai un script tcl qui a besoin de variables pur fonctionner Ces variables sont contenues dans un fichier de configuration codé en Shell.
Le but est d'executer le script TCL en utilisant les variables contenues dans la configuration Shell sans faire de modifications dans le fichier de configuration parce que celui-ci est aussi utilisé par des scripts shell.

Merci de prendre de ton temps pour m'aider.

Fais moi signe si d'autres éclaircissements sont nécessaires ou si tu veux un exemple.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
oui, un exemple
mais tu peux modifier le tcl ?
depuis un shell, tu exécutes le fichier de configuration shell, puis tu exécutes le tcl duquel tu pourras récupérer les variables shell
par ex.
$ export AAA=aaaaaaaaaaaaaaa 
$
$ tclsh 
%  
% puts $env(AAA) 
aaaaaaaaaaaaaaa 
%  
% exit 
$  
0
bijnok Messages postés 87 Statut Membre 12
 
Dans ton exemple cela fonctionne avec une variable, mais pas avec un fichier contenant la déclaration des variables; il me semble avoir essayer.

Voici un exemple, avec la descritpion de chaque fichier.

Fichier de configuration: variables.cfg (Shell)

Nom =  'Bijnok'
Date = 'Aujourd'hui'
Sujet = 'galère avec tcl'



Fichier à executer: execution.tcl

puts $Nom a  ecrit $Date  dans le sujet $Sujet



Le but est donc de rapatrier toutes les variables de "variables.cfg" pour l'execution du tcl...


Encore merci.
0
bijnok Messages postés 87 Statut Membre 12
 
Réponse obtenue à partir de http://wiki.tcl.tk/706
::::::::::::::
test.cfg
::::::::::::::
#!/bin/bash   

export a=toto   
export b=tata   




::::::::::::::
test.sh ou test.tcl (peut importe)
::::::::::::::
#!/bin/bash   
#\   
. "./test.cfg"   
#\   
exec tclsh "$0" "$@"   

puts $env(a)   

puts $env(b)   

puts "fin"



Finalement, il faut transformer le tcl en sh (l'extension ne change rien, là je parle de la première ligne du fichier qui indique l'interpréteur à utiliser).

Il faut ajouter
#\
avant chaque ligne de code shell afin que ces lignes de code ne provoque pas d'erreur lorsque l'on appel le script en tcl avec la commande
exec tclsh "$0" "$@"
.
En fait #\ est un commentaire pour le shell ET pour le tcl mais pour le tcl la ligne qui suit #\ est aussi un commentaire !!

Il faut aussi faire un export de toutes les variables du fichier de configuration utilisées par le tcl.


dubcek
hello
je dirais: depuis le shell, appeller le fichier de configuration shell, appeller le script TCL et récupérer les variables d'environnement avec env

En effet, avec ajout des
#\

Encore merci à toi dubcek


________________________________
EDIT
________

Pour éviter d'avoir à trop modifier le fichier tcl, on a déclarer les variables tcl en début de fichier en récupérant les variables shell: exemple:
var1_tcl=$env(var1_shell) 
var2_tcl=$env(var2_shell) 
var3_tcl=$env(var3_shell)


Comme ça on ne touche oas dut otu au corps du code tcl.
0