|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2002 Messages : 43 ![]() |
J'ai 2 programmes bash shell A et B.
A appelle B, B travaille sur une variable V. Comment faire pour que A recupére la valeur V traitée dans B? Merci |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : novembre 2007 Messages : 130 ![]() |
Salut,
Je pense qu'en shell classique ceci n'est pas possible. Par contre en ksh si je mes souvenirs sont bon tu peu retourner une valeur " return 5" meme a l'exterieur d'une fonction avec le sh ou encore dans le script A : exit 5 et dans le deusieme script tu fait resultat=$(exec(scriptA.sh)) |
|
|
00
|
|
|
#3 | ||||
|
Membre habitué
![]() Inscription : janvier 2007 Messages : 148 ![]() |
J'ajouterais que le code retour est compris entre 0 et 255.
Une autre solution permet d'outrepasser ces limites en exportant la variable dans l'environnement, en executant le shell A dans l'instance du shell B. Ce qui donnerait : Code :
Code :
|
||||
|
|
00
|
|
|
#4 | ||||
![]() ![]() Inscription : août 2005 Messages : 8 310 ![]() |
Attention, les enfants : le code de retour sert à donner des informations d'état (le programme s'est bien passé, il y a eu une erreur X, etc.), pas à renvoyer le résultat d'un traitement. Quand tout se passe bien, le code de retour attendu est 0. Si ce n'est pas 0, c'est qu'il y a eu un pb. Chaque script utilise alors un code > 0 pour indiquer le type d'erreur de son choix.
La façon classique de récupérer le résultat d'une commande c'est de passer par la sortie standard, exactement comme on le fait pour toutes les commandes classiques Unix. Exemple : B : Code :
Code :
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
||||
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : janvier 2007 Messages : 148 ![]() |
Ah oui ca c'est clairement plus propre = )
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com