今天 gitlab 定时任务运行错误,在控制台查看错误信息,提示以下错误:
08: value too great for base (error token is "08")
出现这个错误的原因是在获取当前日期的周的时候,返回的是字符串 08,而我对这个 week 变量进行了逻辑运算,所以抛出了错误,举个简单的例子:
num="08"
result=$((num - 1));
echo "${result}"
$((...)) 用于 shell 的数学运算符和操作数,如加法、减法、乘法、除法等。在执行时,shell 会计算该数学表达式的结果,并将结果作为一个整数值替换掉整个 $(...) 表达式。
这个例子的 num 是一个字符串的 08,在执行逻辑运算,抛出了 value too great for base (error token is "08") 这个错误。
解决方法
既然字符串无法逻辑运算,我们只需要将字符串转成整形即可,如下:
num="08"
num=$((10#$num))
result=$((num - 1));
echo "${result}"
10#$num
表示将一个特定进制的数字转换为十进制数