计算数组中出现的次数 bash

Count ocurrences in an array bash

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

 #!/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

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

#!/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