【发布时间】:2017-01-09 17:11:01
【问题描述】:
foo='abc'
bar='xyz'
var=bar
当我拥有var 时,如何访问'xyz'?
我试过了:
$(echo $var)
和
$(eval echo $var)
我刚收到bar: command not found
【问题讨论】:
foo='abc'
bar='xyz'
var=bar
当我拥有var 时,如何访问'xyz'?
我试过了:
$(echo $var)
和
$(eval echo $var)
我刚收到bar: command not found
【问题讨论】:
使用bash间接变量引用:
${!var}
当然也可以用eval完成,不推荐:
eval 'echo $'"$var"
原因:
$ bar=xyz
$ var='bar;whoami'
$ eval 'echo $'"$var"
xyz
spamegg
whoami 的命令也正在被 eval 评估作为评估的一部分,想象一个破坏性命令而不是 whoami。
示例:
$ bar='xyz'
$ var=bar
$ echo "${!var}"
xyz
$ eval 'echo $'"$var"
xyz
【讨论】:
eval,那可能会让这更优雅。 :) ++