Variables et sous-scripts
Bonjour,
J'utilise un script qui appelle un deuxième script qui initialise des variables que je veux utiliser dans mon premier script :
- Soit une variable récupérée via un echo
- Soit plusieurs variables récupérées par un export
Jusqu'à présent c'était soit l'un ou l'autre donc ça ne pose pas de problème :
- on utilise VAR=$(./script2.sh) pour récupérée la donnée envoyée par echo
- On utilise les variables initialisées par l'appel du script avec le point pour ne pas créer un autre shel : . ./script2.sh
Désormais j'aimerais utiliser les deux en même temps sans modifier le deuxième script. Logiquement, il me suffit d'utiliser VAR=$(. ./script2.sh) mais les variables initialisées par les export sont vides dans le premier script.
Voici un exemple, le quatrième cas ne fonctionne pas comme prévu. Y a-t-il une solution sans modifier le deuxième script (sous-shell.sh) ?
test.sh :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #!/bin/bash
# Database INFO
VAR_EXPORT=
VAR_ECHO=
echo Appel 1
./sous-shell.sh
echo VAR_EXPORT=$VAR_EXPORT
echo VAR_ECHO=$VAR_ECHO
VAR_EXPORT=
VAR_ECHO=
echo Appel 2
. ./sous-shell.sh
echo VAR_EXPORT=$VAR_EXPORT
echo VAR_ECHO=$VAR_ECHO
VAR_EXPORT=
VAR_ECHO=
echo Appel 3
VAR_ECHO=$(./sous-shell.sh)
echo VAR_EXPORT=$VAR_EXPORT
echo VAR_ECHO=$VAR_ECHO
VAR_EXPORT=
VAR_ECHO=
echo Appel 4
VAR_ECHO=$(. ./sous-shell.sh)
echo VAR_EXPORT=$VAR_EXPORT
echo VAR_ECHO=$VAR_ECHO |
sous-shell.sh
Code:
1 2 3 4
| #!/bin/bash
# Database INFO
export VAR_EXPORT=VAR_EXPORT
echo VAR_ECHO |
Résultat :
Appel 1
VAR_ECHO
VAR_EXPORT=
VAR_ECHO=
Appel 2
VAR_ECHO
VAR_EXPORT=VAR_EXPORT
VAR_ECHO=
Appel 3
VAR_EXPORT=
VAR_ECHO=VAR_ECHO
Appel 4
VAR_EXPORT=
VAR_ECHO=VAR_ECHO
Commentaire :
Appel 1 : OK, export ne sont pas utilisables vu qu'on a ouvert un sous shell
Appel 2 : OK, export utilisables vu qu'on reste dans le même shell
Appel 3 : OK, on stocke la donnée renvoyée par echo dans la variable et l'export ne fonctionne pas car on a ouvert un sous-shell
Appel 4 : KO, on stocke la donnée renvoyée par echo dans la variable mais l'export ne fonctionne pas comme souhaité