如何遍历在bash脚本中创建的数组列表

时间:2015-03-18 23:09:30

标签: arrays bash

根据此帖中的建议,我在bash脚本中创建一个数组列表 How to declare 2D array in bash(阿索斯爵士编辑2) -


编辑2:要声明并初始化a0..a3 [0..4]为0,您可以运行:

for i in {0..3}; do
    eval "declare -a a$i=( $(for j in {0..4}; do echo 0; done) )"
done

现在我无法访问新创建的数组。我试图循环并重新创建与创建时相同的数组名称,但导致了错误的替换#39;错误。

for j in {0..3}; do
    echo ${a$j[@]:0}
done

收到错误:

${a$i[@]:0}: bad substitution

有关如何访问阵列的任何想法?最终,数组列表将更大并动态创建。这只是一个例子

1 个答案:

答案 0 :(得分:2)

您使用的方法很糟糕。请改用同一问题中的jm666's accepted answer

解决这个问题:

a1=("foo" "bar")
a2=("baz" "etc")

j=1
var="a$j[@]"
echo "The value of $var is:" "${!var}"

i=0;
var2="a$j[$i]"
echo "The value of $var2 is ${!var2}"

将打印

The value of a1[@] is: foo bar
The value of a1[0] is: foo