比较bash中的负数

Dav*_*adi 2 bash comparison negative-number

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

if [[ "-2" > "-1" ]]; then
    echo "-2 >-1"
else
    echo "-2 <=-1"
fi
Run Code Online (Sandbox Code Playgroud)

我也试过了

if [ '-2' -lt '-1' ]; then
Run Code Online (Sandbox Code Playgroud)

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

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

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

dev*_*ull 8

似乎工作正常:

if [[ "-2" -gt "-1" ]]; then
    echo "-2 >-1"
else
    echo "-2 <=-1"
fi
Run Code Online (Sandbox Code Playgroud)

输出:

-2 <=-1
Run Code Online (Sandbox Code Playgroud)

您可能希望使用((...))哪个允许根据Shell算法的规则来计算表达式.

$ ((-2 <= -1)) && echo Smaller or equal || echo Larger
Smaller or equal
$ ((-2 <= -3)) && echo Smaller or equal || echo Larger
Larger
Run Code Online (Sandbox Code Playgroud)


Kar*_*ath 5

-lt意味着少于.事实上,-2小于-1.

你想要使用-gt,大于.