Bashで他の変数に基づいて変数を参照する方法は?はいを設定します。
package="foobar"
# the variable I wish to reference is $foobar_darwin_amd64
# thus trying:
echo "$package_darwin_amd64"
しかし、これはうまくいきません。
答え1
シェルが${!varname}
間接的な形式をサポートしている場合は、次のことができます(@Barmarが提案したように)。
$ foobar_darwin_amd64=pinto
$ package=foobar
$ varname="${package}_darwin_amd64"
$ echo ${!varname}
pinto
それ以外の場合は、次のものを使用できますeval
。
$ foobar_darwin_amd64=pinto
$ package=foobar
$ eval echo \$${package}_darwin_amd64
pinto
つまり、eval
使用に関連するいくつかのリスクがあります。このリンクを見たもっと議論してみてください。
答え2
これが私のために働いた解決策です。
VARNAME="${package}_darwin_amd64"
echo "${!VARNAME}"
答え3
Bash v4では、名前参照」
$ foobar_darwin_amd64=pinto
$ package=foobar
$ declare -n var=${package}_darwin_amd64
$ echo "$var"
pinto
変わりやすい名前あなたが構築したものは以下から得ることができます。間接的な変数拡張構文:
$ echo "${!var}"
foobar_darwin_amd64