从变量引用 bash 变量

Jus*_*tin 3 bash variable-substitution

如何在 bash 中基于另一个变量引用一个变量?让我设置一下示例:

package="foobar"

# the variable I wish to reference is $foobar_darwin_amd64
# thus trying:
echo "$package_darwin_amd64"
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。

And*_*ton 9

如果您的 shell 支持${!varname}间接引用的形式,您可以执行以下操作(按照@Barmar 的建议):

$ foobar_darwin_amd64=pinto
$ package=foobar
$ varname="${package}_darwin_amd64"
$ echo ${!varname}
pinto
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用eval

$ foobar_darwin_amd64=pinto
$ package=foobar
$ eval echo \$${package}_darwin_amd64
pinto
Run Code Online (Sandbox Code Playgroud)

也就是说,使用eval有一些与之相关的风险,请参阅此链接以获取更多讨论。