比较bash中的数字时,为什么“[[10 <2]]”为真?

时间:2017-03-12 08:52:11

标签: bash shell

当我跑步时

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

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

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

返回no

1 个答案:

答案 0 :(得分:10)

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

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

在bash中,也可以使用双括号进行数值比较:

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

以上示例将回显no