Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
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 19/11/2009, 16h32   #1
Nouveau Membre du Club
 
Inscription : juillet 2005
Messages : 126
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 126
Points : 33
Points : 33
Par défaut Récupérer la valeur d'une variable valorisée d'une fonction au niveau du shell global

Bonjour,

J'ai le shell suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/ksh
#

test="Y"
 
reaffect () {
        test="N"
        echo "test dans la fonction= $test"
}
 
echo "test avant la fonction= $test"

(echo "yo" || { reaffect && exit; } && reaffect) &

echo "test apres la fonction= $test"


exit
Quand j'exécute ce shell j'ai le résultat suivant :
Citation:
test avant la fonction= Y
yo
test dans la fonction= N
test apres la fonction= Y
Cela signifie que mon process global ne reconnait pas la variable redéfinie dans la fonction quand je l'appelle de la manière suivante :

Code :
1
2
(echo "yo" || { reaffect && exit; } && reaffect) &
Et bien sûr, si je l'appelle de la manière suivante :
Alors j'obtiens le bon résultat, à savoir la valeur "N" en fin de shell :

Citation:
test avant la fonction= Y
yo
test dans la fonction= N
test apres la fonction= N
Pouvez-vous m'aider svp ?

Il faut absolument que je garde la manière d'appeler la fonction comme je l'ai écrite dans le code du shell.

Merci de votre aide,

Cat
Cathy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2009, 16h46   #2
Nouveau Membre du Club
 
Inscription : juillet 2005
Messages : 126
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 126
Points : 33
Points : 33
si j'enlève les parenthèses et le "&" lors de l'appel de ma fonction suite à l'exécution de la commande echo alors ça fonctionne MAIS il faut absolument que je lance cette commande "en parallèle" dans ce même shell (ce qui explique l'utilisation du "&") et il faut également que j'exécute la fonction si la commande s'est bien/mal exécutée
Cathy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2009, 16h48   #3
Nouveau Membre du Club
 
Inscription : juillet 2005
Messages : 126
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 126
Points : 33
Points : 33
le code sera plus tard inclus dans une boucle qui lancera la commande echo (et donc appellera la fonction) 10 fois d'affilée.

Pour simplifier, je n'ai mis qu'une partie du code

Merci à tous
Cathy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2009, 18h01   #4
Nouveau Membre du Club
 
Inscription : juillet 2005
Messages : 126
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 126
Points : 33
Points : 33
Finalement j'ai décidé d'écrire ma variable dans un fichier au niveau de la fonction et ensuite d'extraire cette variable du fichier au niveau du process global
Cathy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 07h11.


 
 
 
 
Partenaires

Hébergement Web