Stack Overflowのこの質問で示されているように、別のスクリプトから変数を取得します。
ただし、答えはsource
でのみ使用可能なbash
コマンドを使用します。ポータブルな方法でこれを行いたいです。
私も試しました
a.sh
export VAR="foo"
echo "executing a"
b.sh
#!/bin/sh
./a.sh
echo $VAR
しかし、もちろんそれも機能しません。これを行う方法?
まず、var
とVAR
は異なる変数であることに注意してください。
質問に答えるために、.
コマンドはbash固有ではありません:
# a.sh
num=42
# b.sh
. ./a.sh
echo $num
「a」の変数をエクスポートする必要はありません。
http://www.gnu.org/software/bash/manual/bashref.html#Bourne-Shell-Builtins
環境変数は親から子にのみ継承され、逆には継承されません。この例では、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