Como importar uma variável de outro script?

6

Eu quero obter uma variável de outro script, conforme demonstrado nesta pergunta no Stack Overflow:

Como referenciar um arquivo para variáveis em um script bash

No entanto, a resposta usa o comando source , disponível apenas em bash . Eu quero fazer isso de maneira portátil.

Eu também tentei

a.sh

export VAR="foo"
echo "executing a"

b.sh

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

Mas é claro que isso também não funciona. Como fazer isso?

    
por Eero Aaltonen 11.06.2013 / 16:07

2 respostas

8

Antes de mais nada, esteja ciente de que var e VAR são variáveis diferentes.

Para responder à sua pergunta, o comando . não é específico do bash:

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

As variáveis em "a" não precisam ser exportadas.

link

    
por glenn jackman 11.06.2013 / 20:19
0

As variáveis de ambiente só são herdadas de pai para filho e não o contrário. No seu exemplo, b.sh chama a.sh, então é executado como filho de b. Quando a.sh export var, não será visto por b.sh. Altere a lógica para que o processo pai exporte a variável, por exemplo

a.sh:

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

b.sh:

echo In b.sh...
echo $VAR
    
por Simonski 11.06.2013 / 18:15