transmission de variables entre 2 SH - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 05-07-2010 à 10:57:57
question : pourquoi tu tiens à utiliser 2 scripts ?
quel est ton besoin exact ?
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 )
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 !
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,
Marsh Posté le 05-07-2010 à 11:40:22
si ca peux aider, ca prend cette forme:
Citation : |
du coup il y a peut etre moyen d'executer la sortie php directement dans le script pour pas perdre les variables ?
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,
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.
Marsh Posté le 05-07-2010 à 14:02:01
merci je suis ému
sinon le coup de sourcer pourquoi pas. Je n'y avais pas pensé.
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"
Marsh Posté le 05-07-2010 à 10:41:46
bonjour,
j'ai deux scripts:
=>cat a.sh
#!/bin/sh
export variable="hello world??"
=>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