arrays - Bash比较数组值以找到最大值

标签 arrays bash

我试图在 bash 中找到整数数组中的最大值。我对 bash 很陌生。 这是我到目前为止所拥有的...

    max="${array[0]}"
    for ((i=0;i<${#array[@]};i++))
    do  
        if [ ${array[$i]} > $max ]
        then
            max="${array[$i]}"

        fi
    done

其中数组大约有 500 个正整数 ex。 24 27 13 34 2 104 645 411 1042 38 5 24 120 236 2 33 6。目前它总是返回我数组中的最后一个整数。似乎这应该是一个简单的修复,但我不确定我遗漏了什么。感谢您的帮助。

最佳答案

此测试 [ ${array[$i]} > $max ] 正在执行词法比较,因此 99 大于 100

你想要其中之一:

[[ ${array[$i]} -gt $max ]]   # numeric comparison operator
(( ${array[$i]} > $max ))     # arithmetic evaluation

或者,使用标准工具可能会更快,尽管必须产生几个额外的进程:

max=$( printf "%d\n" "${array[@]}" | sort -n | tail -1 )

关于arrays - Bash比较数组值以找到最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22120189/

相关文章:

java - 如何确保 Java 跨方法找到变量?

bash - 为多个命令使用用户/密码*一次*进行身份验证? ( session 多路复用)

linux - Ubuntu 中的 PATH 变量设置在哪里?

bash - 你如何从 'find' 中获取结果?

javascript - 单击 checkAll 复选框时,将其对象推送到另一个数组对象中并从现有数组中删除

C - I/O - 用于打印句子结构的字符数组

ios - 单击打开 url 时如何修复 "Struct"以包含 UIButton?

java - 循环多次打印最后一行 - 我做错了什么? - 使用BufferedReader

git - 无法运行 Hook /更新后 : No such file or directory

linux - 使用 bash 脚本检查时间戳是否在特定范围内