在bash中初始化二维数组时出错

时间:2017-02-25 17:32:58

标签: arrays bash

以下是我对

提出的问题的代码
#!/bin/bash

declare -a data81

for ((i=1; i<=3; i++))
do
    for ((j=1; j<=2; j++))
    do
        data81[$i, $j]=$i
        printf "%4s" ${data81[$i, $j]}
        printf "%4s\n" ${data81[1, 1]}
    done
    echo
done

输出如下:

   1   1
   1   1

   2   2
   2   2

   3   3
   3   3

这不是我想要的,因为我使用了printf "%4s\n" ${data81[1, 1]},所以第二列应该是相同的。

2 个答案:

答案 0 :(得分:0)

更改此行:

declare -a data81

对此:

declare -A data81

这不会创建多维数组,而是创建关联数组。索引是一个字符串,充当字典类型数据结构的键。注意如何构建索引,每次访问元素时都必须具有完全相同的结构。

答案 1 :(得分:0)

你可以这样试试。

#!/bin/bash

declare -a data81

for ((i=1; i<=3; i++))
do
    for ((j=1; j<=2; j++))
    do
        data81[$i$j]=$i
        printf "%4s" ${data81[$i$j]}
        printf "%4s\n" ${data81[11]}
    done
    echo
done