transmission de variables entre 2 SH

transmission de variables entre 2 SH - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 05-07-2010 à 10:41:46    

bonjour,
 
j'ai deux scripts:
 

Citation :

=>cat a.sh
#!/bin/sh
export variable="hello world??"


 

Citation :

=>cat b.sh
#!/bin/sh
sh a.sh
echo $variable


 
si j'appel b.sh, la sortie est une chaine vide et j'aimerai que ce soit la variable exporté dans le script a.sh,  
vous pouvez me dire pourquoi cela ne marche pas ?
 
merci,


Message édité par pitse le 05-07-2010 à 10:42:37
Reply

Marsh Posté le 05-07-2010 à 10:41:46   

Reply

Marsh Posté le 05-07-2010 à 10:57:57    

question : pourquoi tu tiens à utiliser 2 scripts ?  
 
quel est ton besoin exact ?

Reply

Marsh Posté le 05-07-2010 à 11:03:39    

c'est une contrainte existante,
 
un des scripts (a.sh dans l'exemple) est généré dynamiquement par un script php et contiens des variables qu'il m'est beaucoup plus simple de généré en php qu'en SH ( acces a une bdd, traitement etc )
 

Reply

Marsh Posté le 05-07-2010 à 11:09:35    

le problème c'est qu'à ma connaissance les variables sont propres au shell courant.
 
Après tu peux feinter. Par exemple ton "a.sh" génère le fichier /tmp/a.sh.prov qui contient juste la valeur de ta variable.
 
Ensuite ton "b.sh" lis le fichier, charge la valeur dans une variable et efface ce fichier temporaire.
 
Je sais pas si ça t'aide mais à froid c'est ce qui me vient !

Reply

Marsh Posté le 05-07-2010 à 11:32:06    

il y a plusieurs variables en fait, donc je vais voir s'il n y a pas d'autre idées que d'autre pourraient avoir
 
merci pour ton aide en tout cas,

Reply

Marsh Posté le 05-07-2010 à 11:40:22    

si ca peux aider, ca prend cette forme:
 

Citation :


...
php -f launch.php $instance syncFromMySQL $date >$commands
/bin/sh $commands
..


 
du coup il y a peut etre moyen d'executer la sortie php directement dans le script pour pas perdre les variables ?

Reply

Marsh Posté le 05-07-2010 à 12:51:08    

bon bien j'ai trouvé une solution alternative en bidouillant un peu:
 
j'ai deporter une partie des commandes de b.sh  pour les mettre dans a.sh  
 
c'est un peu moins propre mais le bloquage etait trop frustant :s
 
merci pour ton aide,

Reply

Marsh Posté le 05-07-2010 à 13:20:03    

de rien, j'ai fait ce que j'ai pu  ;)

Reply

Marsh Posté le 05-07-2010 à 13:51:54    

Perso je trouve la solution de slywalker avec un fichier temporaire qui contient les variables très propre !
 
Sinon tu "source" a.sh à partir de b.sh ça aura pour effet d'executer le code inclus dans a.sh et de rendre les variables disponibles.


Message édité par High Plains Drifter le 05-07-2010 à 13:52:15

---------------
| < Ceci n'est pas une pipe.
Reply

Marsh Posté le 05-07-2010 à 14:02:01    

merci je suis ému  :D  
 
sinon le coup de sourcer pourquoi pas. Je n'y avais pas pensé.

Reply

Marsh Posté le 05-07-2010 à 14:02:01   

Reply

Marsh Posté le 11-07-2010 à 12:39:27    

Faut pas exécuter le script a.sh dans le shell courant ?
". a.sh" au lieu de "sh a.sh" [:figti]

Reply

Sujets relatifs:

Leave a Replay

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