Shell脚本变量反射

6
我正在编写一个 shell 脚本(#!/bin/sh),其中有一个变量 VAR,它包含另一个变量 FOO 的名称,而 FOO 又被设置为 BAR。
FOO=BAR
VAR=FOO

我希望获取名为VAR的变量的值,类似于以下内容:
echo "${$VAR}"

但似乎这并不起作用。有什么建议吗?

如果使用的是Bash shell,则建议使用重复内容。如果不是Bash shell,则这不是一个合适的重复内容,因为没有任何答案提到替代机制——eval - Jonathan Leffler
1
我通过这样说来解决它:echo "${!VAR}"。谢谢。 - user3739584
1
在这种情况下,你应该使用Bash而不是像Korn Shell一样的其他Shell。精确地指明你所使用的Shell可以提高获得良好答案的机会。 - Jonathan Leffler
1个回答

6

在Bash中:

echo "${!VAR}"

没有Bash(尽管它也可以在Bash中工作):

eval echo "\${$VAR}"

注意: eval 是一个非常普遍的机制,很容易让您陷入问题。虽然在这里它可以正常使用,但是在更普遍的情况下要小心使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接