【问题标题】:Why is "[[ 10 < 2 ]]" true when comparing numbers in bash? [duplicate]为什么在 bash 中比较数字时“[[ 10 < 2 ]]”为真? [复制]
【发布时间】:2021-10-14 05:48:49
【问题描述】:

当我跑步时

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

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

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

它返回no

【问题讨论】:

  • 当您提出问题时,界面应该已经显示了一系列类似问题的搜索结果。在那里显示的标题中没有标记吗?

标签: bash shell


【解决方案1】:

因为您根据Lexicographical order 比较字符串而不是数字

您可以使用[[ 10 -lt 2 ]][[ 20 -lt 2 ]]-lt 代表 小于 (&lt;)。对于大于 (&gt;),可以改用-gt 表示法。

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

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

上面的例子会回显no

【讨论】:

  • 我使用 bash shell
猜你喜欢
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 2023-02-26
  • 1970-01-01
  • 2017-04-18
  • 2021-05-25
相关资源
最近更新 更多