比较bash中的负数

时间:2013-07-30 10:59:07

标签: bash comparison negative-number

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

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

我也试过

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

但条件总是表现为-2大于-1。

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

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

3 个答案:

答案 0 :(得分:8)

似乎正常工作:

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

输出:

-2 <=-1

您可能希望使用((...))来启用根据Shell算术规则计算表达式。

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

答案 1 :(得分:5)

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

您想要使用-gt大于

答案 2 :(得分:2)

$ 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(严格大于)。