今天 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 表示将一个特定进制的数字转换为十进制数
本文为原创,未经授权,禁止任何媒体或个人自媒体转载
商业侵权必究,如需授权请联系340443366@qq.com
标签: Linux shell