bash句柄都以if中的非零值和零值开头

时间:2016-11-01 09:33:28

标签: bash

我需要比较两个整数值,这里是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))

无论什么值,它都会将其更改为十进制并将其重新分配给相同的变量。

1 个答案:

答案 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