我试图取消引用单个变量中包含的两个或多个变量,但我想不出如何在没有eval的情况下执行此操作:
$:b=5
$:c=10
$:a='$b $c'
$:result=`eval echo $a`
$:echo $result
5 10
我正在寻找能给我“结果”的等效操作,所以我不需要做一个评估。是否有可能以任何其他方式解析由单个变量引用的多个变量?我想在BASH
这样做答案 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
答案 1 :(得分:1)
这是一个更好的解决方案:
Bash Templating: How to build configuration files from templates with Bash?
你只需稍微调整一下,这样就会遵循你的语法。