3

私は次のようなコードを持っています:

my_var="MY_FIRST_ENV_VAR"

私の質問は、環境変数MY_ENV_VARから値を取得するにはどうすればよいかということです。

私はたくさんのことを試しましたが、主な問題はmy_varが文字列になったことです。

これを実行したい理由は、ほぼ同じ名前の環境変数がいくつかあるためです。

MY_FIRST_ENV_VAR=R1.2.3
MY_SECOND_ENV_VAR=R2.3.4

for vari in FIRST SECOND; do
    branch=MY_$( echo $vari )_ENV_VAR;
    echo $branch;
    echo ${branch};
    echo "${branch};
done;

私は他にもいくつか試しました。私のコードでは、FIRST文字列とSECOND文字列にアクセスできるだけなので、最初に変数の名前を作成する必要があります。

私はかなり長い間探していました、そして多分私はただ間違ったものを探しています。

4

2 に答える 2

2

これを試して:

MY_FIRST_ENV_VAR=R1.2.3
MY_SECOND_ENV_VAR=R2.3.4

for vari in FIRST SECOND; do
    varName="MY_${vari}_ENV_VAR"
    branch=${!varName}
    echo "$branch"
done

出力:

R1.2.3
R2.3.4

${!varName}間接展開と呼ばれ、と呼ばれる変数を展開できますvarName。詳細については、bashのmanページを参照してください。


シェルが上記の間接拡張をサポートしていない場合は、eval代わりに次を使用してください。

MY_FIRST_ENV_VAR=R1.2.3
MY_SECOND_ENV_VAR=R2.3.4

for vari in FIRST SECOND; do
    branch=$(eval "echo \$MY_${vari}_ENV_VAR")
    echo "$branch"
done
于 2013-02-28T08:37:02.957 に答える