シェル変数名を動的に見つける方法

シェル変数名を動的に見つける方法

私は次のような状況にあります。

zmx_stderr='\033[1;35m'
zmx_stdout='\033[1;36m'


tag='foobar'

tailing(){
  echo "tailing logs for ${tag} ...";
  while read line; do
   echo -e "$zmx_${1} $tag $1${zmx_no_color}: $line"
  done;
}

誰かが tailing() メソッドを呼び出します。

tailing stderr
tailing stdout

zmx_stdoutとzmx_stderrを動的に見つける方法は?

これはうまくいきません:

$zmx_${1}

私はこれを見つけました:

stdout foobar stdout:

しかし、私が探しているのは:

foobar stdout:

制御文字の生成。


ベストアンサー1

補助変数を使用してターゲット変数の名前を作成し、変数間接参照を使用できます。

zmx_var=zmx_$1
echo -e "${!zmx_var} $tag $1${zmx_no_color}: $line"

おすすめ記事