10 votes

Comment importer une variable d'un autre script ?

Je veux obtenir une variable d'un autre script, comme démontré dans cette question sur Stack Overflow :

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

Cependant, la réponse utilise le source qui n'est disponible qu'en bash . Je veux le faire de manière portable.

J'ai également 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 ?

16voto

Todd Gamblin Points 101

Tout d'abord, sachez que var y VAR sont des variables différentes.

Pour répondre à votre question, le . n'est pas spécifique à une base :

# a.sh
num=42

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

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

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

0voto

ohadsc Points 133

Les variables d'environnement ne sont héritées que des parents aux enfants et non l'inverse. Dans votre exemple, b.sh appelle a.sh, donc a s'exécute en tant qu'enfant de b. Quand a.sh exporte var, il ne sera pas vu par b.sh. Modifiez la logique de manière à ce que le 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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X