Shell脚本变量反射

use*_*584 4 bash shell

我正在编写一个shell脚本(#!/ bin/sh),它有一个变量VAR,它包含另一个变量FOO的名称,后者又设置为BAR.

FOO=BAR
VAR=FOO
Run Code Online (Sandbox Code Playgroud)

我想获得VAR中命名的变量的值,如下所示:

echo "${$VAR}"
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.建议?

Jon*_*ler 6

在Bash:

echo "${!VAR}"
Run Code Online (Sandbox Code Playgroud)

没有Bash(虽然它也适用于Bash):

eval echo "\${$VAR}"
Run Code Online (Sandbox Code Playgroud)

注意:这eval是一种非常通用的机制,可以很容易地解决问题.它在这里工作正常,但要更普遍地使用它时要小心.