2

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

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

我也试过

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

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

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

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

4

3 回答 3

8

似乎工作正常:

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

输出:

-2 <=-1

您可能希望使用((...))which 使表达式能够根据 Shell Arithmetic 的规则进行评估。

$ ((-2 <= -1)) && echo Smaller or equal || echo Larger
Smaller or equal
$ ((-2 <= -3)) && echo Smaller or equal || echo Larger
Larger
于 2013-07-30T11:06:09.010 回答
6

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

你想用-gt大于

于 2013-07-30T11:04:31.913 回答
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(严格大于)。

于 2013-07-30T11:02:02.817 回答