bashには、いくつかの変数をエクスポートする関数がありますが、そうではありません。
ここに例があります:
function f() {
# ...
declare -rx TIMESTAMP_FORMAT='+%Y-%m-%d %H:%M:%S'
# ...
}
内からこれを行う正しい方法は何function
ですか?
私の環境
bash v3.2.48(1)-リリース osx 10.8.3
変数をグローバルとして宣言するには、オプションを使用します-g
。このような:
function f() {
# ...
declare -grx TIMESTAMP_FORMAT='+%Y-%m-%d %H:%M:%S'
# ...
}
からの引用help declare
:
-d シェル関数で使用されたときにグローバル変数を作成します。それ以外の場合は無視されます
更新最後のコメントを読んだ後:
関数外およびサブシェルで利用可能
...export
探しているコマンドのようです。この例を確認してください:
function foo {
export BAR="test"
}
# call function
foo
# will output 'test'
echo "$BAR"
# as the var is in environemt:
export -p | grep "BAR"
# ... it will be available from sub shells as well
注:export
ソリューションには-r
、declare の (読み取り専用) 機能がありません。これで生活できればexport
OKです。
宣言を使用しないでください。変数は関数の外部でも使用できます。
function f() {
# ...
TIMESTAMP_FORMAT='+%Y-%m-%d %H:%M:%S'
# ...
}
f # call your function
echo "OUTSIDE: " $TIMESTAMP_FORMAT