bashの変数部分文字列を持つ変数

bashの変数部分文字列を持つ変数

Bashで私は定義しました。

chg_Li=3
chg_Na=9

$chg_$i今、私はforループのどこにいるのかを呼び出してandを繰り返したいと思います。iLiNa

呼び出しの正しい構文は何ですか$chg_$i

答え1

以下を使用するか、間接的に使用できますeval

eval echo \$chg_$i

または

varname=$chg_$i
echo ${!varname}

答え2

前述のように、間接参照を使用できます。

$ chg_Li=3
$ chg_Na=9
$ post_fix=(Li Na)
$ for j in ${post_fix[@]}; do chg="chg_$j"; echo "${!chg}"; done;
3
9

関連情報