如何在Bash中比较数字

问题:

我无法让数值比较工作正常:

echo "enter two numbers";
read a b;

echo "a=$a";
echo "b=$b";

if [ $a \> $b ];
then
    echo "a is greater than b";
else
    echo "b is greater than a";
fi;

问题在于,它比较的是从第一位开始的数,即9大于10,但1大于09

我如何将数字转换为一种类型来做真正的比较?


回答:

在 Bash 中,你可以在算术语境中进行比较:

if (( a > b )); then
    echo "a is greater than b";
fi

对于不支持 (()) 的 POSIX shell,可以使用 -lt-gt

咱们看以下示例代码:

# 比较两个数字的大小
a=10
b=20
if [ $a -gt $b ]; then
    echo "$a is greater than $b"
else
    echo "$a is not greater than $b"
fi

# 比较一个数字和一个字符串的大小
c=30
d="30"
if [ $c -lt $d ]; then
    echo "$c is less than $d"
else
    echo "$c is not less than $d"
fi

除此之外,整数还可以用以下操作符进行比较:

  • -eq: 等于
  • -ne: 不等于
  • -le: 小于等于
  • -ge: 大于等于

你可以使用命令 help testman test 获得比较操作符的完整列表及释义。

如果将表达式放在 [[ ]][ ] 中,进行整数比较时不要使用运算符 > <

root@linux:~# a=9
root@linux:~# b=10
root@linux:~# if (( $a < $b )) ; then   echo "$a < $b"; fi
9 < 10
root@linux:~# if [[ $a > $b ]] ; then   echo "$a > $b"; fi
9 > 10
root@linux:~# if [ $a > $b ] ; then   echo "$a > $b"; fi
9 > 10

其中后面两次比较都是将变量 ab 当作字符串按字典顺序进行排序比较的,所以执行结果跟我们的预期结果不一致。


参考:

  • stackoverflow question 18668556
  • help test

相关阅读:

相关推荐

  1. 如何Bash比较数字

    2024-04-06 12:50:09       46 阅读
  2. 如何Bash连接字符串变量

    2024-04-06 12:50:09       31 阅读
  3. Bash如何提取子字符串

    2024-04-06 12:50:09       38 阅读
  4. 图片转换成base64如何html文件使用呢

    2024-04-06 12:50:09       42 阅读
  5. 告别自动激活:掌握如何Conda禁用Base环境

    2024-04-06 12:50:09       32 阅读
  6. shell的浮点类型数值如何进行比较运算

    2024-04-06 12:50:09       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-06 12:50:09       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 12:50:09       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 12:50:09       87 阅读
  4. Python语言-面向对象

    2024-04-06 12:50:09       96 阅读

热门阅读

  1. 正弦实时数据库的应用(1)-数字孪生

    2024-04-06 12:50:09       34 阅读
  2. 623: 程序设计C 实验五 题目六 排序查找(python)

    2024-04-06 12:50:09       41 阅读
  3. js实现图片放大镜

    2024-04-06 12:50:09       41 阅读
  4. Streamlit 构建大语言模型 (LLM) web 界面

    2024-04-06 12:50:09       33 阅读
  5. txpcg面经总结

    2024-04-06 12:50:09       27 阅读
  6. 90天玩转Python-02-基础知识篇:初识Python与PyCharm

    2024-04-06 12:50:09       40 阅读
  7. c++高精度计算20除法High-precision20calculate240101

    2024-04-06 12:50:09       42 阅读
  8. 利用python 实现微信自动回复

    2024-04-06 12:50:09       33 阅读
  9. 拼多多商家电话采集步骤,软件使用教程详解

    2024-04-06 12:50:09       78 阅读