我有一个bash脚本,它将不同的width:height值推送到数组的末尾。有些值是重复的。我需要做的是遍历数组,计算数组中每个唯一值的出现次数,然后检索具有最多重复值的值。
dimensions=( )
dimensions[${#dimensions[*]}]="450:180"
dimensions[${#dimensions[*]}]="360:240"
dimensions[${#dimensions[*]}]="360:240"
dimensions[${#dimensions[*]}]="640:480"
dimensions[${#dimensions[*]}]="360:240"
dimensions[${#dimensions[*]}]="640:480"
在上面的数组中,我需要检索值“360:240”,因为有3个重复项。如何计算唯一值并最终得到一个包含数组中重复次数最多的值的变量?
mostDuplicates="360:240"
答案 0 :(得分:4)
Bash版本4具有关联数组:
#! /bin/bash
dimensions=(
450:180
360:240
360:240
640:480
360:240
640:480)
declare -A count
max=0
for d in ${dimensions[@]} ; do
if (( ++count[$d] > max )) ; then
max=${count[$d]}
winner=$d
fi
done
echo Winner: $winner, $max times