【发布时间】:2018-01-16 00:05:01
【问题描述】:
我有一个关联数组,其行为类似于通常的双数组。
结构类似于:[ [0,1], [0,1,2] ]。代码:
declare -A array
array[0,0]=0
array[0,1]=1
array[1,0]=0
array[1,1]=1
array[1,2]=2
我如何获得 array[0] 和 array[1] 的长度?在本例中:2 和 3。
谢谢。
附:我试图搜索重复项。没有成功。如果不清楚:我不知道数组的长度。
答案是在效率测试后选择的。这是基于@RenaudPacalet 回答的函数示例:
function getLength() {
local k=$(eval "echo \${!$1[@]}")
local re="(\<$2,[0-9])"
echo $k | grep -Eo $re | wc -l
}
用法示例:getLength array 1 在本题中返回 3。
请记住,使用 $(eval "echo \${!$1[@]}") 比使用 ${!array[@]} 慢得多。
【问题讨论】:
-
"这就像它通常的双数组" 不,它没有,它总是充当关联数组。
-
回声 ${#array[@]}
-
@Ignacio Vazquez-Abrams,我的意思是它让人想起双数组。不行动,如果你愿意:)
-
@py9,这有什么帮助?
-
bash 不支持多维数组(array[0,0] 只是索引为“0,0”的列表元素)。见stackoverflow.com/questions/12317483/array-of-arrays-in-bash
标签: arrays bash unix multidimensional-array bash4