根据此帖中的建议,我在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
有关如何访问阵列的任何想法?最终,数组列表将更大并动态创建。这只是一个例子
答案 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