很抱歉,如果标题不是很清楚。所以,我试图在使用read
从用户获取变量(在此示例中为$ A)后回显bash中的变量,如下所示:
foobar="good"
A=bar
B="\$foo$A"
echo $B
但回显$ B的输出是“$ foobar”,而不是“好”,这就是我想要的。我最后尝试使用eval $B
,但它只是告诉我“好”不是命令。 eval $(echo $B)
也没有用,它还告诉我“好”不是命令。 echo $(eval $B)
还告诉我“好”不是命令,而且还打印一个空行。
为了帮助澄清为什么我需要这样做:foobar是一个包含字符串“good”的变量,foobaz包含“bad”,我想让用户通过键入“bar”来选择回显哪个字符串当程序运行read A
时,或者“baz”(在这个例子中,我只是将A指定为条形,以使这个问题更容易理解)。
如果有人能告诉我如何开展这项工作,或提供相关提示,我会很感激,谢谢。
答案 0 :(得分:1)
您正在寻找间接参考:
$ foobar="hello"
$ A=bar
$ B="foo$A"
$ echo "$B" "${!B}"
foobar hello
您应该查看How can I use variable variables常见问题解答,了解有关这些(和关联数组)的更多信息。