回答:
簡単な方法で:
j="jjj"
k="kkk"
l="lll"
for i in {j,k,l}; do echo "$i = ${!i}"; done
出力:
j = jjj
k = kkk
l = lll
${!i}
- bashの可変膨張/間接(に保持された変数名の値を取得します$i
){j,k,l}
短くすることができます{j..l}
:)
{j,k,l}
十分です
j k l
十分でしょう。
bash v4.4以降を使用している場合は、${VAR@A}
パラメーター拡張演算子を使用できます。
これについては、セクション3.5.3シェルパラメータの展開の Bashマニュアルで説明されています。
「A」演算子
拡張は、割り当てステートメントまたは宣言コマンドの形式の文字列であり、評価された場合、その属性と値を使用してパラメーターを再作成します。
だからこれであなたはできる:
j="jjj"
k="kkk"
l="lll"
for i in {$j,$k,$l}; do
echo "${i@A}"
done
そしてあなたの結果は次のようになります:
j='jjj'
k='kkk'
l='lll'
またはzsh
使用中declare -p
% j=jjj; k=kkk; l=(l l l)
% for v in j k l; do declare -p $v; done
typeset j=jjj
typeset k=kkk
typeset -a l=( l l l )
%