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