如何在bash中声明2D数组我想知道如何在bash中声明一个2D数组然后初始化为0。在C中它看起来像这样:int a[4][5] = {0};我如何为元素赋值?如在C:a[2][3] = 3;
3 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
Bash不支持多维数组。
您可以使用间接扩展来模拟它:
#!/bin/bashdeclare -a a0=(1 2 3 4)declare -a a1=(5 6 7 8)var="a1[1]"echo ${!var} # outputs 6
使用此方法也可以进行分配:
let $var=55echo ${a1[1]} # outputs 55
编辑1:要从文件中读取此类数组,行中的每一行以及由空格分隔的值,请使用以下命令:
idx=0while read -a a$idx; do let idx++;done </tmp/some_file
编辑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
缥缈止盈
TA贡献2041条经验 获得超4个赞
ash没有多维数组。但您可以使用关联数组模拟一些类似的效果。以下是假装用作多维数组的关联数组的示例:
declare -A arr
arr[0,0]=0
arr[0,1]=1
arr[1,0]=2
arr[1,1]=3
echo "${arr[0,0]} ${arr[0,1]}" # will print 0 1
如果未将数组声明为关联(with -A),则上述操作无效。例如,如果省略该declare -A arr行,echo则将打印2 3而不是0 1,因为0,0,1,0这将被视为算术表达式并计算为0(逗号运算符右侧的值)。
- 3 回答
- 0 关注
- 500 浏览
添加回答
举报
0/150
提交
取消