Bash:名前が異なる変数の値である変数をエコーし​​ます。

Bash:名前が異なる変数の値である変数をエコーし​​ます。

以下があるとしましょう。

foo1=abc
i=1
a="FOO${i}"
echo ${${a}}
echo ${`echo $a`} # I also tried that

エラーが発生しますbash: ${${a}}: bad substitution

ベストアンサー1

${!parameter}あなたの場合は、パラメータ間接参照を使用できます${!a}

$ foo1=abc
$ i=1
$ a="foo${i}"
$ echo "${!a}"
abc

「パラメータ拡張」セクションでman bash

${パラメータ}

.........

引数の最初の文字が感嘆符(!)の場合、最初のレベル変数間接参照が導入されます。 Bash は、残りの引数で構成される変数値を変数名として使用します。次に、その変数を展開し、引数自体の値ではなく、残りの置換にその値を使用します。

おすすめ記事