2

には、いくつかの変数をエクスポートする関数がありますが、そうではありません。

ここにがあります:

function f() {

  # ...
  declare -rx TIMESTAMP_FORMAT='+%Y-%m-%d %H:%M:%S'
  # ...

}

内からこれを行う正しい方法は何functionですか?


私の環境

v3.2.48(1)-リリース 10.8.3


4

2 に答える 2

2

変数をグローバルとして宣言するには、オプションを使用します-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 の (読み取り専用) 機能がありません。これで生活できればexportOKです。

于 2013-04-02T13:37:07.537 に答える
0

宣言を使用しないでください。変数は関数の外部でも使用できます。

function f() {
  # ...
  TIMESTAMP_FORMAT='+%Y-%m-%d %H:%M:%S'
  # ...
}

f # call your function
echo "OUTSIDE: " $TIMESTAMP_FORMAT
于 2013-04-02T13:47:59.323 に答える