2

通常の二重配列のように機能する連想配列があります。

構造は [ [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 です。

ありがとうございました。

PS重複を検索しようとしました。失敗。明確でない場合: 配列の長さがわかりません。


回答は、効率テストの後に選択されました。@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[@]}

4

2 に答える 2