在POSIX shell中,如何打印变量值的值

时间:2016-03-26 13:01:53

标签: shell posix

在POSIX shell中:

>VALUE=value
>FOOBAR=VALUE

现在如何打印$FOOBAR的值? $$FOOBAR不起作用 - 它从左到右进行,因此首先将$$解释为进程ID。

我面前的重复问题是人们指的是,是的,它确实包含了我的问题的答案,但它埋没在一大堆无关紧要的垃圾中。我的问题更加简单明了。

2 个答案:

答案 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"