在Bash 215中不大于0330。
$ N=215 ; if [[ $N -ge 0330 ]]; then echo ok ; else echo no; fi
no
但是,216不大于0330。我觉得这太奇怪了。为什么会发生这种情况?
$ N=216 ; if [[ $N -ge 0330 ]]; then echo ok ; else echo no; fi
ok
$ N=217 ; if [[ $N -ge 0330 ]]; then echo ok ; else echo no; fi
ok
我预计‘329-ge 0330’是不可以的,‘330-ge 033’是可以的
选取基数:
在零前导的情况下,bash认为他必须处理八进制表示法。
$ N=216 ; if ((N < 10#0330)); then echo ok ; else echo no; fi
# ^^^
# base 10
ok
http://mywiki.wooledge.org/ArithmeticExpression
0330
被解释为八进制数,因为它以前导零开头。在八进制记数法中,十进制值330
表示为516
,它大于215
。