在bash脚本中连接变量

时间:2014-09-22 16:28:09

标签: bash variables

您好我想通过连接另外两个变量来设置变量。

实施例

A=1
B=2
12=C

echo $A$B

期望的结果是C

然而我得到的答案总是12

有可能吗?

已更新 实施例

A=X
B=Y
D=$A$B

xy=test

echo $D

期望的结果是"测试"

3 个答案:

答案 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}