web-dev-qa-db-ja.com

別のスクリプトから変数をインポートする方法は?

Stack Overflowのこの質問で示されているように、別のスクリプトから変数を取得します。

bashスクリプトで変数のファイルを参照する方法

ただし、答えはsourceでのみ使用可能なbashコマンドを使用します。ポータブルな方法でこれを行いたいです。

私も試しました

a.sh

export VAR="foo"
echo "executing a"

b.sh

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

しかし、もちろんそれも機能しません。これを行う方法?

7
Eero Aaltonen

まず、varVARは異なる変数であることに注意してください。

質問に答えるために、.コマンドはbash固有ではありません:

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

「a」の変数をエクスポートする必要はありません。

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

13
glenn jackman

環境変数は親から子にのみ継承され、逆には継承されません。この例では、b.shはa.shを呼び出すため、aはbの子として実行されます。 a.shがvarをエクスポートするとき、b.shには表示されません。 parentプロセスが変数をエクスポートするようにロジックを修正します。

a.sh:

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

b.sh:

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