您好我想通过连接另外两个变量来设置变量。
实施例
A=1
B=2
12=C
echo $A$B
期望的结果是C
然而我得到的答案总是12
有可能吗?
已更新 实施例
A=X
B=Y
D=$A$B
xy=test
echo $D
期望的结果是"测试"
答案 0 :(得分:2)
由于12
不是有效的变量名,所以这里是一个带字符串变量的例子:
> a='hello'
> b='world'
> declare my_$a_$b='my string'
> echo $my_hello_world
my string
答案 1 :(得分:2)
看起来你想要indirect variable references。
BASH允许您间接扩展参数 - 也就是说,一个变量可能包含另一个变量的名称:
# Bash realvariable=contents ref=realvariable echo "${!ref}" # prints the contents of the real variable
但是,正如Pieter21在他的评论中指出12
不是有效的变量名。
答案 2 :(得分:1)
您尝试做的事(几乎)称为间接:http://wiki.bash-hackers.org/syntax/pe#indirection
...我做了一些快速测试,但没有第三个变量这样做似乎不符合逻辑 - 你不能直接连接间接,因为连接的变量/部分不会自己评估结果 - 你将不得不做另一个评估。我认为首先连接它们可能是最简单的。也就是说,你有可能重新思考你正在做的事情。 哦,你不能使用数字(单独或作为起始字符)用于变量名称。
我们走了:
cake="cheese"
var1="ca"
var2="ke"
# this does not work as the indirection sees "ca" and "ke", not "cake". No output.
echo ${!var1}${!var2}
# there might be some other ways of tricking it to do this, but they don't look to sensible as indirection probably needs to work on a real variable.
# ...this works, though:
var3=${var1}${var2}
echo ${!var3}