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 :
sous-shell.sh
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
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
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #!/bin/bash # Database INFO export VAR_EXPORT=VAR_EXPORT echo VAR_ECHO
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é
Partager