我想知道如何在bash中声明2D数组,然后初始化为0。
在C中看起来像这样:
int a[4][5] = {0};
以及如何为元素分配值?如在C中:
a[2][3] = 3;
您可以使用例如哈希来模拟它们,但需要注意前导零和许多其他事情。下一个演示有效,但远非最佳解决方案。
#!/bin/bash declare -A matrix num_rows=4 num_columns=5 for ((i=1;i<=num_rows;i++)) do for ((j=1;j<=num_columns;j++)) do matrix[$i,$j]=$RANDOM done done f1="%$((${#num_rows}+1))s" f2=" %9s" printf "$f1" '' for ((i=1;i<=num_rows;i++)) do printf "$f2" $i done echo for ((j=1;j<=num_columns;j++)) do printf "$f1" $j for ((i=1;i<=num_rows;i++)) do printf "$f2" ${matrix[$i,$j]} done echo done
上面的示例创建了一个具有随机数的4x5矩阵,并将其打印后转置,示例结果
1 2 3 4 1 18006 31193 16110 23297 2 26229 19869 1140 19837 3 8192 2181 25512 2318 4 3269 25516 18701 7977 5 31775 17358 4468 30345
原理是:创建一个关联数组,其中索引是类似的字符串3,4。好处:
3,4
30,40,2
${matrix[2,3]}