web-dev-qa-db-fra.com

Comment importer une variable d'un autre script?

Je veux obtenir une variable d'un autre script, comme illustré dans cette question sur le dépassement de capacité de pile:

Comment référencer un fichier pour les variables dans un script bash

Cependant, la réponse utilise la commande sourcequi est uniquement disponible dans bashname__. Je veux le faire de manière portable.

J'ai aussi essayé

a.sh

export VAR="foo"
echo "executing a"

b.sh

#!/bin/sh
./a.sh
echo $VAR

Mais bien sûr, cela ne fonctionne pas non plus. Comment faire ça?

7
Eero Aaltonen

Tout d’abord, sachez que var et VAR sont des variables différentes.

Pour répondre à votre question, la commande . n'est pas spécifique à bash:

# a.sh
num=42
# b.sh
. ./a.sh
echo $num

Les variables dans "a" ne doivent pas être exportées.

http://www.gnu.org/software/bash/manual/bashref.html#Bourne-Shell-Builtins

13
glenn jackman

Les variables d'environnement ne sont héritées que de parent à enfant et non l'inverse. Dans votre exemple, b.sh appelle a.sh. Ainsi, a est exécuté en tant qu'enfant de b. Quand a.sh exporte var, il ne sera pas vu par b.sh. Modifiez la logique pour que le processus parent exporte la variable, par exemple.

a.sh:

echo In a.sh...
VAR="test"
export VAR
./b.sh

b.sh:

echo In b.sh...
echo $VAR
0
Simonski