【问题标题】:Compare negative numbers in bash [duplicate]比较bash中的负数[重复]
【发布时间】:2013-07-30 11:47:42
【问题描述】:

如何完成涉及负数的数字比较?

if [[ "-2" > "-1" ]]; then
    echo "-2 >-1"
else
    echo "-2 <=-1"
fi

我也试过了

if [ '-2' -lt '-1' ]; then

但条件总是表现得好像 -2 会大于 -1。

当我不使用负数时,比较有效。

如果可能的话,我想要一个纯 bash 的解决方案。

【问题讨论】:

    标签: bash comparison negative-number


    【解决方案1】:

    似乎工作正常:

    if [[ "-2" -gt "-1" ]]; then
        echo "-2 >-1"
    else
        echo "-2 <=-1"
    fi
    

    输出:

    -2 <=-1
    

    您可能想要使用((...)),它使表达式能够根据Shell Arithmetic 的规则进行计算。

    $ ((-2 <= -1)) && echo Smaller or equal || echo Larger
    Smaller or equal
    $ ((-2 <= -3)) && echo Smaller or equal || echo Larger
    Larger
    

    【讨论】:

      【解决方案2】:

      -lt 表示小于。事实上,-2 小于 -1。

      你想使用-gt大于

      【讨论】:

        【解决方案3】:
        $ a=-2
        $ [ $a -le -1 ] && echo "i am lower or equal than -1"
        i am lower or equal than -1
        

        if [ $a -le -1 ]; then
          echo "i am lower or equal than -1"
        fi
        

        要使其“大于”,您需要ge(大于或等于)或gt(严格大于)。

        【讨论】:

        • -le 并不意味着它更低。
        • @KarolyHorvath 刚刚更新,谢谢。
        猜你喜欢
        • 2020-09-28
        • 1970-01-01
        • 2017-11-19
        • 2015-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-26
        • 2021-03-09
        相关资源
        最近更新 更多