Bash间接引用,其中一个var引用多个

时间:2012-02-17 16:59:26

标签: bash

我试图取消引用单个变量中包含的两个或多个变量,但我想不出如何在没有eval的情况下执行此操作:

$:b=5
$:c=10
$:a='$b $c'
$:result=`eval echo $a`
$:echo $result
5 10

我正在寻找能给我“结果”的等效操作,所以我不需要做一个评估。是否有可能以任何其他方式解析由单个变量引用的多个变量?我想在BASH

这样做

2 个答案:

答案 0 :(得分:4)

简而言之,我认为您不必像在代码中那样使用eval进行多变量间接引用。

Bash中似乎有两种类型的间接变量引用,一种带有eval,另一种带有特殊符号${!var}

$ b=5
$ a=b
$ echo ${!a}
5

也许使用阵列可满足您的需求:

$ b=5
$ c=10
$ a=(b c)
$ echo ${!a[0]} ${!a[1]}
5 10

http://tldp.org/LDP/abs/html/abs-guide.html#IVR

答案 1 :(得分:1)

eval声音非常可怕...

这是一个更好的解决方案:

Bash Templating: How to build configuration files from templates with Bash?

你只需稍微调整一下,这样就会遵循你的语法。