比较bash中的整数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

i=0

if [ $i -ge 2 ]
                then
                #some code
                fi

提问于
用户回答回答于

从错误消息判断,i的值是执行时的空字符串,而不是0。

用户回答回答于

进行比较,例如:

if [ "$i" -ge 2 ] ; then
  ...
fi

这是因为shell如何对待变量

if [ $i -ge 2 ] ; then ...

详情如下:

if [     -ge 2 ] ; then ...

现在,变量替换已经完成,shell继续进行比较

if [ "$i" -ge 2 ] ; then ...

变成:

if [ "    " -ge 2 ] ; then ...

shell现在可以看到双引号,并且知道实际上是将四个空格与2进行比较,并跳过if

您还可以选择为$i如果$i为空白,如下所示:

if [ "${i:-0}" -ge 2 ] ; then ...

扫码关注云+社区