【问题标题】:Count ocurrences in an array bash计算数组 bash 中的出现次数
【发布时间】:2018-11-03 19:01:45
【问题描述】:

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

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

【问题讨论】:

    标签: linux bash associative-array


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 2017-03-24
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多