Bash:回显一个变量,其名称是另一个变量的值

dar*_*ine 2 bash variable-substitution

假设我有以下内容:

foo1=abc
i=1
a="FOO${i}"
echo ${${a}}
echo ${`echo $a`} # I also tried that
Run Code Online (Sandbox Code Playgroud)

我收到错误bash: ${${a}}: bad substitution

hee*_*ayl 5

${!parameter}您可以在您的情况下使用参数间接,即${!a}

$ foo1=abc
$ i=1
$ a="foo${i}"
$ echo "${!a}"
abc
Run Code Online (Sandbox Code Playgroud)

来自“参数扩展”部分man bash

${参数}

…………

如果参数的第一个字符是感叹号 (!),则它引入了一级变量间接寻址。Bash 使用由参数的其余部分形成的变量的值作为变量的名称;然后扩展该变量,并在其余替换中使用该值,而不是参数本身的值。