KornShell:变量分配"000010"转换为8而不是10.

Eth*_*ost 0 unix shell scripting ksh sed

我有一个固定长度的字符串,这是一个数字.当我将字符串分配给变量时,它被赋值为8而不是10.为什么?我怎么阻止它?

$ i=10
$ ((i=i+1))
$ echo $i
11    # Right answer
$ i=000010
$ ((i=i+1))
$ echo $i
9     # Wrong answer
Run Code Online (Sandbox Code Playgroud)

更新:答案确认数字正在转换为八进制,并且需要删除前导零.这是sed命令.

echo"000010"| sed's/0*//'

Chr*_*odd 6

这是因为一个前导0意味着常量是八进制(基数为8)而不是十进制(基数为10).要阻止它,你需要剥离前导0