同様の問題について質問があります。これ質問がありますが、ローカル変数に基づいてグローバル変数を呼び出す必要があります。
テスト、ステージング、またはプロダクションをスクリプトに変数として渡したいと仮定すると、次のようにできます。
#!/bin/bash
env=$1
export ENV_$env=some_param
echo $ENV_${env}
しかし、グローバル変数はまったく検索されないようです。
# ./script.sh test
test
このスクリプトのユースケースは、並列に動作するプロセスの分離を提供することです。
答え1
答え2
export
呼び出し範囲内で実行してみてくださいeval
。
eval export ENV_${env}=some_param
ENV_${env}
これにより、シェルに割り当てを試みる前に、予想される名前の1つにシェルが適切に拡張されます。
eval
変数に格納されている値を取得するときは、次のものも使用する必要があります。
eval echo \$ENV_$env
バックスラッシュを参照してください。これは、シェルが組み込み変数を使用してその部分を拡張する$ENV_
まで存在しない変数を拡張しようとするのを防ぎます。この拡張の結果は最終的にに渡され、これは動的変数のフルネームを取得し、拡張して以前に保存した値を生成します。$env
eval
echo