我正在尝试使用关联数组对数组中的出现次数进行计数
#!/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
答案 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