在POSIX shell中:
>VALUE=value
>FOOBAR=VALUE
现在如何打印$FOOBAR
的值? $$FOOBAR
不起作用 - 它从左到右进行,因此首先将$$
解释为进程ID。
我面前的重复问题是人们指的是,是的,它确实包含了我的问题的答案,但它埋没在一大堆无关紧要的垃圾中。我的问题更加简单明了。
答案 0 :(得分:1)
对于POSIX可移植性,您几乎可以使用
eval echo \$$variable
通常的警告适用;如果您传入的字符串不完全且完全由您自己控制,请不要使用eval
。
我降低了你的榜样;你不应该使用大写字母作为私有变量,因为大写名称是为系统使用而保留的。
答案 1 :(得分:0)
在POSIX中执行此操作的唯一方法是使用eval
,因此非常确定FOOBAR
只包含有效的变量名称。
$ VALUE=value
$ FOOBAR=VALUE
$ valid_var='[[:alpha:]_][[:alnum:]_]*$'
$ expr "$FOOBAR" : "$valid_var" > /dev/null && eval "echo \$$FOOBAR"