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

为什么在bash中比较数字时“[[10

沙小白
2023-03-14

当我跑的时候

if [[ 10 < 2 ]];
  then echo "yes";
else echo "no"; 
fi

在shell中,它返回yes。为什么?它应该是?当我跑的时候

if [[ 20 < 2 ]];
  then echo "yes";
else echo "no";
fi

它返回

共有1个答案

薛坚
2023-03-14

因为您是根据字典顺序而不是数字来比较字符串的

您可以使用[[10-lt 2]][[20-lt 2]]]-lt表示小于(

在bash中,双括号也可用于执行数字比较:

if ((10 < 2)); then echo "yes"; else echo "no"; fi

上述示例将回显no

 类似资料:
  • 我无法进行数字比较: 问题是,它从第一个数字开始比较数字,即9大于10,但1大于09。 我如何将数字转换成一种类型来进行真正的比较?

  • 我有一个包含以下条目的Java配置文件 这是一个编入工作了6年的罐子的资源。突然之间,这种比较似乎并不等同于布尔真。 我已经检查了Windows行尾和空格。这是Bash5.0.17,它相当新。它在Solaris上运行。似乎足够简单,我们不想编辑脚本,如果可能的话。还有什么其他的解释呢?

  • 问题内容: 我正在尝试将来自HTML文本字段的值与整数进行比较。它按预期工作。条件是- 文本字段的值在哪里。只要值介于1-999(含)之间,条件就会返回,否则返回。问题是,来自文本字段的值是字符串类型,我正在将其与整数类型进行比较。可以进行这种比较,还是应该使用parseInt()转换为整数? 问题答案: 因为JavaScript 以允许它们将操作数强制转换为不同类型的方式定义和(以及其他几个运算

  • 问题内容: 输出: 为什么这样的输出?我期望作为第一种情况的结果。 问题答案: 区别在于6.5可以完全以float和double表示,而3.2不能完全以两种类型表示。并且两个最接近的近似是不同的。 float和double之间的相等比较首先将float转换为double,然后将两者进行比较。因此数据丢失。 您不应该比较浮点数或双精度数是否相等。因为您不能真正保证分配给float或double的数字

  • 问题内容: 我从书中看到以下代码: 但没有提到为什么“一个”大于“四个”。我试过了,它小于a和b。我想知道JavaScript如何比较这些字符串。 问题答案: 因为和许多编程语言一样,字符串是按字典顺序进行比较的。 你可以认为这是一个空想家版本的字母顺序,区别在于字母排序仅覆盖了26个字符通过。

  • 问题内容: 在JBox2d中,存在以下代码: 我想知道这里的float <-> int位转换函数的作用是什么。这是否提供解决Java的float比较不准确性问题的方法(如果可能的话)?还是完全不同?我想知道它是否可以替代epsilon方法: PS。为了完整和有趣,这里是: 仅供参考,我可以完美地理解为什么在hashCode()中使用转换函数-哈希ID必须是整数。 问题答案: 解释中可以找到约书亚B