计算数组bash中的出现次数

时间:2018-11-03 19:01:46

标签: linux bash associative-array

我正在尝试使用关联数组对数组中的出现次数进行计数

 #!/bin/bash

arr=@{}
arr2=(A B B C D A B)

for i in "${arr2[@]}"; do  #Run trough array

    if [[ -v arr[$i] ]];  #Check if key exists at associative array
    then
        arr[$i]=arr[$i]+1 #Increment value
    else
        arr+=([$i]=1)     #Create key/value pair
    fi

done

for i in ${!arr[*]} #Run trough associative array
do
  echo $i ${arr[*]}
done

我得到的输出是:0 arr [B] +1

1 个答案:

答案 0 :(得分:0)

您的代码在更多的地方是错误的。这是正确的:

#!/bin/bash

declare -A arr
arr2=(A B B C D A B)

for i in "${arr2[@]}"; do  #Run trough array

    if [[ -v arr[$i] ]];  #Check if key exists at associative array
    then
        arr[$i]=$((${arr[$i]}+1)) #Increment value
    else
        arr[$i]=1     #Create key/value pair
    fi
done

for i in ${!arr[@]} #Run trough associative array
do
  echo $i ${arr[$i]}
done

,输出为:

A 2
B 3
C 1
D 1