此错误是shell脚本在计算以0开头的数字时,默认以8进制进行计算,导致在计算08时超过了8进制的范围,报此错误。
shell脚本代码如下:
#!/bin/bash a=00 for i in {0..11} do a=$[$a+1] if [ $a -lt 10 ] then a="0"$a fi echo "$a" done
运行之后的结果:
01 02 03 04 05 06 07 08 t.sh: line 5: 08: value too great for base (error token is "08")
解决方法:使用10#将该变量声明为10进制。
如下代码即可成功运行。
a=00 for i in {0..11} do a=$[10#$a+1] if [ $a -lt 10 ] then a="0"$a fi echo "$a" done