Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2008, 17h55   #1
Nouveau Membre du Club
 
Inscription : juillet 2002
Messages : 43
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2002
Messages : 43
Points : 25
Points : 25
Par défaut retourner une valeur

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
c4cf6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 18h34   #2
Membre habitué
 
Inscription : novembre 2007
Messages : 130
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 130
Points : 134
Points : 134
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))
azalsup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 19h07   #3
Membre habitué
 
Inscription : janvier 2007
Messages : 148
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 148
Points : 145
Points : 145
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 :
1
2
3
4
 
. shellA.ksh
# si shell a fait un export VAR_RETOURA
VAR_RETOURB=VAR_RETOURA
en ksh, sinon en bash il me semble qu'il faut faire

Code :
1
2
3
 
source shellA.ksh
VAR_RETOURB=VAR_RETOURA
Delwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 20h51   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 310
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 310
Points : 8 592
Points : 8 592
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 :
1
2
3
4
5
#!/bin/bash
 
# On envoi le resultat sur la sortie standard
echo $((1+2))
# et surtout pas exit $((1+2)) !!
A :
Code :
1
2
3
4
5
#!/bin/bash
 
...
# On lance le traitement de B et on recupere le resultat sur l'entree standard
resultat_b=`B`
__________________

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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 23h21   #5
Membre habitué
 
Inscription : janvier 2007
Messages : 148
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 148
Points : 145
Points : 145
Ah oui ca c'est clairement plus propre = )
Delwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h54.


 
 
 
 
Partenaires

Hébergement Web