[sh] export de variable

export de variable [sh] - Shell/Batch - Programmation

Marsh Posté le 30-01-2004 à 11:26:33    

j'ai fait un script permettant de recueillir toutes les options de compils (-Wall, -DDEBUG, ...)
et ensuite qd je lance le make, celui-ci ne connait pas ma variable regroupant ttes mes options de compil.
 
ça c mon script:

Code :
  1. echo "Mode DEBUG? [o/n] (defaut n)"
  2. read Rep
  3. while [ $Rep != "n" -a $Rep != "o" ]
  4.   do
  5.   echo "$Rep n'est pas n ou o"
  6.   read Rep
  7.   done
  8. if [ $Rep = "o" ];then
  9.     debug="-DDEBUG"
  10. fi
  11. export CompilFlags="$debug"
  12. echo $CompilFlags


 
ça c mon makefile:

Code :
  1. CC=gcc
  2. prog : clean stylet.o prog.o
  3. $(CC) -o prog stylet.o prog.o
  4. prog.o : prog.c stylet.h
  5. $(CC) -c $(CompilFlags) prog.c
  6. stylet.o : stylet.c stylet.h
  7. $(CC) -c $(CompilFlags) stylet.c
  8. clean:
  9. rm -f *.o *~
  10. veryclean:
  11. rm -f *.o *~ prog


 
mici!

Reply

Marsh Posté le 30-01-2004 à 11:26:33   

Reply

Marsh Posté le 30-01-2004 à 11:45:00    

Pour que cela fonctionne il faut que le make soit lancé dans le script qui modifie la variable.
 
 


---------------
Jean Pierre.
Reply

Marsh Posté le 30-01-2004 à 12:51:35    

ouais j'ai remarqué ça...
mais n'est-il pas possible de lancer le make en dehors du script???
parce que le but de l'export est qd mm que la variable soit globale! non?

Reply

Marsh Posté le 30-01-2004 à 13:20:14    

Quand tu lances ton script celui-ci est exécuté dans un sous-process qui récupére l'environnement du process pére (dont les variables exportées et le répertoire courant).  
En fin d'exécution les modifications sur l'environnement sont perdues (modification variable, changement répertoire courant), elles ne remontent pas au niveau du process pére.  
 
Pour que la modification/définition de la variable CompilFlags soit conservée, il faut exécuter ton script dans le 'environnement en cours (process), pour cela il faut utiliser la syntaxe d'appel suivante :


. mon_script
make


 
 


---------------
Jean Pierre.
Reply

Marsh Posté le 30-01-2004 à 19:29:03    

merci pour cette précision aigles!
 
 
 
(pour ma culture) il n'est pas possible de réaliser ce que je souhaite?? (p-ê avec un 'set')
 
thx encore.

Reply

Marsh Posté le 30-01-2004 à 22:47:59    

Pour définir ta variable je ne vois que la méthode d'appel de ton shell par '.' (source).
Pour être de na pas oublier de faire l'appel comme il faut, une solution est d'exécuter ton script par l'intermédiaire d'un alias que tu peux définir dans ton script de login :


alias options='. mon_script'


et pour l'utilisation :


options
make


 


---------------
Jean Pierre.
Reply

Marsh Posté le 31-01-2004 à 00:17:14    

oki j'essaierai ça.
merci encore!!! (y)

Reply

Sujets relatifs:

Leave a Replay

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