【问题标题】: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(严格大于)。