当前位置: 首页 > 知识库问答 >
问题:

如何在Bash中比较数字?

翟俊哲
2023-03-14

我无法进行数字比较:

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。

我如何将数字转换成一种类型来进行真正的比较?

共有3个答案

仉磊
2023-03-14

还有一件好事有些人可能不知道:

echo $(( a < b ? a : b ))

此代码将打印ab中的最小数字

李和昶
2023-03-14

像这样:

#!/bin/bash

a=2462620
b=2462620

if [ "$a" -eq "$b" ]; then
  echo "They're equal";
fi

整数可以与以下运算符进行比较:

-eq # Equal
-ne # Not equal
-lt # Less than
-le # Less than or equal
-gt # Greater than
-ge # Greater than or equal

看这张备忘单。

华哲茂
2023-03-14

在Bash中,您应该在算术上下文中执行检查:

if (( a > b )); then
    ...
fi

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

if [ "$a" -gt "$b" ]; then
    ...
fi

您可以通过帮助测试人工测试获得比较运算符的完整列表。

 类似资料:
  • 当我跑的时候 在shell中,它返回。为什么?它应该是?当我跑的时候 它返回。

  • 问题内容: 我想比较两个数组…理想地,有效地比较。没有什么幻想,只要它们是相同的,如果不相同。毫不奇怪,比较运算符似乎不起作用。 每个数组都可以使用JSON编码,但是有没有一种更快或更“更好”的方法来简单地比较数组而不必遍历每个值? 问题答案: 要比较数组,请遍历它们并比较每个值: 比较数组: 用法: 您可能会说“ 但是比较字符串要快得多-没有循环… ”,那么,您应该注意存在ARE循环。第一个递归

  • 在db中,我有一个字段名类型 字段的值如下 但没有返回结果。 问题是什么,如何修复?

  • null null 字符串比较给出错误的输出。 我无法使用cast或to_number函数将其转换为number,因为字符串值大于38位。

  • 问题内容: 我有一个程序正在制作,当用户输入一种心情时,它将在此基础上输出报价。我需要告诉程序 问题是,我不知道如何使程序识别输入并基于该输出文本…这是到目前为止我所拥有的代码。 问题答案: 首先,看起来您正在处理错误的变量。我想你打算比较。 处理字符串时,请始终使用而不是。比较参考值(通常不可靠),同时比较实际值。 将您的字符串转换为全部大写或全部小写也是一个好习惯。在本示例中,我将使用小写字母

  • 问题内容: 在java中如何比较字符串,使用==还是equals 问题答案: == 测试引用是否相等(它们是否是同一对象)。 .equals() 测试值是否相等(在逻辑上是否为“相等”)。 String.contentEquals() 将的内容String与任何内容进行比较CharSequence(从Java 1.5开始可用)。 因此,如果要测试两个字符串是否具有相同的值,则可能要使用Object