変数名とその値を出力する方法はありますか?
j=jjj k=kkk l=lll for i in j k l do .... done
期待される出力(各変数は別々の行にあります):
j = jjj k = kkk l = lll
上記の結果を得る方法を誰かが提案できますか?
コメント
- 関連: unix.stackexchange.com/questions/129084/ …
回答
簡単な方法:
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..l}
を使用して{j,k,l}
を短くすることもできます:) - @αғsнιη、' 3つしかない限り、拡張範囲に適しています。 ems-
{j,k,l}
で十分です -
j k l
で十分です。
回答
bash v4.4以降を使用している場合は、${VAR@A}
パラメーター展開演算子を使用できます。
これについては、Bashのマニュアルのセクション 3.5.3シェルパラメータの拡張
“A”演算子
展開は、割り当てステートメントまたは宣言コマンドの形式の文字列です。評価すると、属性と値を使用してパラメータが再作成されます。
これにより、次のことが可能になります。
j="jjj" k="kkk" l="lll" for i in {$j,$k,$l}; do echo "${i@A}" done
結果は次のようになります。
j="jjj" k="kkk" l="lll"