我需要比较两个整数值,这里是if条件,
if [[ $VAL -ge 1000 ]] ; then
#do something
fi
但问题是当它试图与整数值010
进行比较时得到的错误是
-bash: 01: value too great for base (error token is "01")
我在if条件中使用$VAL#0
修复了此问题。
但仍然遇到同样的问题,尝试比较整数值0010
,并用10#${VAL}
修正。
正确的整数值(如523
并且低于错误
[[: #10523: syntax error: operand expected (error token is "#10523")
不确定如何使if语句适用于所有情况。
更新(解决方案):
找到修复程序。
VAL=$((10#$VAL))
无论什么值,它都会将其更改为十进制并将其重新分配给相同的变量。
答案 0 :(得分:0)
我认为你的例子不太对劲。 010不会给出基本错误,例如090会。那是因为假定前导零的数字是八进制的。
要手动设置基数,请在数字前加上10#
:
$ if [[ 100 -gt 090 ]]; then echo t; else echo f; fi
bash: [[: 090: value too great for base (error token is "090")
f
$ if [[ 100 -gt 10#090 ]]; then echo t; else echo f; fi
t
对于您的情况,这意味着您应该使用:
if [[ "10#$VAL" -ge 1000 ]] ; then
#do something
fi