Bonjour,

J'ai le shell suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

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