Shell时间(数字)踩坑记录:value too great for base

问题

[[: 0900: value too great for base (error token is "0900")

原本的脚本:

设置了一个时间,如果没有超过10:30程序就执行TODO... 下面的0930指的是上午9点30分,这个原本是自动获取的一个时间,这里简化为说明问题

dead_line_time="0930"

echo "[info] check时间:${dead_line_time}"
if [[ ${dead_line_time} -lt "1030" ]]; then
    TODO...
fi

结果报错:

[[: 0930: value too great for base (error token is "0930")

其实这里的0930中,如果在9的前面填充了0。Shell 就会把它当成是八进制(base is 8)。因此就出现了开始的错误。

解决方式:

在八进制的数字之前加上“10#”来表示后面的数字为10进制 那么,这样就可以进行判断了

dead_line_time="0930"

echo "[info] check时间:${dead_line_time}"
if [[ 10#${dead_line_time} -lt "1030" ]]; then
    TODO...
fi

这样就ok了。

发布者:Johngo学长。文章已受到原创版权保护。
转载请注明出处:https://www.johngo689.com/2221/

(0)
上一篇 2021年9月28日 下午5:44
下一篇 2021年10月8日 下午6:10

相关推荐

发表评论

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部