#1 Le 28/02/2011, à 18:42
- T10-9D
exporter variable d'un shell fils à son père.
Bonjour,
je ne parviens pas mettre la main sur un solution. mon ami fidel-Googl* me fais tourner en rond.
Donc, je voudrais exporter une variable d'un shell fils jusqu'au père (j'espère que c'est comme cela que l'on dit)
avec les commandes je serais peut être plus claire :
export a="azer"
bash
echo $a #là c'est bon !
export a+="qsdf"
echo $a #là c'est bon !
exit
echo $a
#et là, c'est le drame...
merci
Hors ligne
#2 Le 28/02/2011, à 19:10
- FRUiT
Re : exporter variable d'un shell fils à son père.
Il me semble que c'est impossible, mais attends quand même d'autres avis plus documentés/précis.
(Ou alors la ruse commune : passer par un fichier de stockage temporaire pour ta variable a que tu rappelles ensuite dans ton script père en faisant a=$(<fichier.temp) )
Dernière modification par FRUiT (Le 28/02/2011, à 19:26)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#3 Le 28/02/2011, à 19:48
- wsc
Re : exporter variable d'un shell fils à son père.
Il me semble que c'est impossible, mais attends quand même d'autres avis plus documentés/précis.
(Ou alors la ruse commune : passer par un fichier de stockage temporaire pour ta variable a que tu rappelles ensuite dans ton script père en faisant a=$(<fichier.temp) )
J'utilise cela, et je ne pense pas qu'on puisse faire autrement personnellement
#!/bin/crash
SYS="Arch Linux avec FVWM Crystal"
echo -e "\nMon site internet et le weB-log ... \nMon système: $SYS \n\n"
sleep 2 && exit 0
Hors ligne
#4 Le 28/02/2011, à 21:09
- ehmicky
Re : exporter variable d'un shell fils à son père.
C'est impossible je pense.
Si tu regardes à un plus bas niveau, exporter une variable revient à passer l'array contenant l'ensemble des variables d'environnement comme argument de l'appel système execve(). Une fois l'image du nouveau process créé, celui-ci a ses propres segments pour ses variables, qui ne communiquent pas avec ceux du parent. La seule communication est l'exit code. Du coup tu dois passer par tous les processus de communication inter-processus possibles : fichiers temporaires, named pipes, signaux, etc., ou éviter de créer un nouveau process/subshell.
Dîtes-moi si je dis des bêtises
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#5 Le 01/03/2011, à 12:08
- T10-9D
Re : exporter variable d'un shell fils à son père.
Je redoutais des réponses de ce type.
Cependant, vous me laissez encore un espoir. (ça vous apprendra à ne pas être catégorique )
bon bah,... en attendant trouver l'astuce. j'opte pour le fichier temp.
merci de votre aide.
Ps: @ehmicky: ta réponses m'ayant permis de découvrir les "named pipes". je caresse l'espoir découvrir des merveilles derrière ton," etc..."
Hors ligne
#6 Le 01/03/2011, à 13:54
- ehmicky
Re : exporter variable d'un shell fils à son père.
Pour le "etc." : les IPC dispos sous Linux, il y a par exemple comme je disais fichier temp (le moins bien), pipes anonymes, named pipes, signaux, mémoire partagée, message queues, sockets, mais à la base c'est implémenté dans le noyau et dispo via des appels système en C, mais je crois qu'il existe des commandes Unix pour tous pour pouvoir les utiliser en Bash.
Après, y'a aussi la solution : revoir le design du programme et ne pas créer un nouveau process.
Dernière modification par ehmicky (Le 01/03/2011, à 13:57)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#7 Le 02/03/2011, à 11:13
- T10-9D
Re : exporter variable d'un shell fils à son père.
Mr Ehmicky, veuillez recevoir, mes plus cordiales remerciements
for ((i=0;i<=5;i+=1)); do echo "révérence"; sleep 1; done; echo ";)"
Hors ligne