Ah OK. Deux choses :
1) Dans main.sh, tu peux faire :
eval LOGIN=$(echo \$${PROCESS}_${DB}_${INSTANCE}_LOGIN)
Dans ton exemple ça va positionner LOGIN à la valeur XX123.
2) Mais... Si tu te contenté d'exécuter export.sh dans main.sh, alors main.sh ne verra pas les valeurs que export.sh a positionné. La raison est simple : un process fils (export.sh) ne peut en aucun cas modifier l'environnement d'un process existant (en l'occurence son process père, main.sh). Un process ne peut que modifier son propre environnement, et éventuellement transmettre son environnement lors de la création d'un process fils (en "exportant" les variables à transmettre, avec export).
Donc... Il ne faut pas que main.sh exécute export.sh. Il faut qu'il le source, comme ceci :
Ou bien, ce qui est strictement équivalent mais moins standard :
source /path/to/export.sh
Quand un fichier est "sourcé", il est interprété par le shell courant au lieu d'être exécuté dans un shell fils. Donc dans ce cas main.sh récupèrera effectivement les variables positionnées par export.sh.
Partager