在bash中有一个这样的数组
array_1=(1 2 3 4 5)
array_2=(6 7 8 9 0)
我有另一个包含1或2的变量。
array_index=1
那么可以使用该变量创建数组名称 - 就像这样吗?
array_${array_index}[0]
答案 0 :(得分:3)
使用变量间接读取和declare
来编写:
array_1=(1 2 3 4 5)
array_2=(6 7 8 9 0)
array_index=1
var="array_${array_index}[0]"
echo "The contents of $var is ${!var}"
declare "$var"="Something Else"
echo "Now $var contains ${!var} instead."
这比eval
更安全,更容易正确使用。
答案 1 :(得分:0)
问题是访问您必须执行${array[index]}
之类的特定元素。但是你也希望在array
部分中嵌套一个变量,bash在尝试执行扩展时将无法理解,因为它希望array
是变量。
因此,我能想到这样做的唯一方法是强制数组扩展发生在变量之后。 e.g。
> array_1=(1 2 3 4 5)
> array_2=(6 7 8 9 0)
> array_index=1
> eval "echo \${array_$array_index[0]}"
1
答案 2 :(得分:0)