我正试图取消引用单个变量中包含的两个或多个变量,但我想不出如何在没有eval:的情况下进行引用
$:b=5
$:c=10
$:a='$b $c'
$:result=`eval echo $a`
$:echo $result
5 10
我想做一个等价的运算,得到"result",这样我就不必做eval了。是否可以通过其他方式解析单个变量引用的多个变量?我希望在BASH 中做到这一点
简而言之,不,我认为您必须像在代码中那样使用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
eval的声音相当可怕。。。
这里有一个更好的解决方案:
Bash模板:如何使用Bash从模板构建配置文件?
你只需要稍微调整一下,让它符合你的语法。