来自一行中数组的Bash-sum值

teu*_*ara 2 linux bash sum

我有这个数组:

array=(1 2 3 4 4 3 4 3)
Run Code Online (Sandbox Code Playgroud)

我可以得到最大的数字:

echo "num: $(printf "%d\n" ${array[@]} | sort -nr | head -n 1)"
#outputs 4
Run Code Online (Sandbox Code Playgroud)

但是我希望得到所有4个加上它们的总和,这意味着我希望它输出12(有3次出现4次).有任何想法吗?

Mar*_*eed 5

dc <<<"$(printf '%d\n' "${array[@]}" | sort -n | uniq -c  | tail -n 1) * p"
Run Code Online (Sandbox Code Playgroud)
  1. sort 最终得到最大值
  2. uniq -c 获取唯一值,并计算它们出现的次数
  3. tail 仅获取最后一行(具有最大值及其计数)
  4. dc 将值乘以计数

我选择dc了乘法步骤因为它是RPN,所以你不必分割uniq -c输出并在其中间插入任何东西 - 只需添加东西到最后.