温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

line 40: 09: value too great for base (error token is "09")

发布时间:2020-08-11 23:51:46 来源:ITPUB博客 阅读:284 作者:running_life 栏目:建站服务器
os:rhel6.8 2.6.32-642.el6.x86_64

    今天在测试编写的redis数据库的ping检测脚本时报了一个错误“./redis_ping.sh: line 40: 09: value too great for base (error token is "09")”,问了度娘,说是因为shell中的双括号运算符会将0开头的数字当做8进制来计算,所以会报错,09比基数大。脚本中用到双括号运算符的地方是处理日期时分秒的地方,如下:
cur_date=`date "+%Y-%m-%d %H:%M:%S"`---获取格式化时间
cur_hour_m2=$(($((${cur_date:11:2}+0))%2))---截取字符串,并用双括号运算符使之与0相加(为了去掉占位0,通常是使用let,expr等加0),但是事与愿违,恰好双括号运算符对于0开头的数字不能当做十进制计算
cur_min=$((${cur_date:14:2}+0))--截取字符串,并加0
cur_sec=$((${cur_date:17:2}+0))--截取字符串,并加0

修改为:
cur_hour=$(($(date +%-H)%2))--模2,也就是控制2小时执行一次
cur_min=$(date +%-M)
cur_sec=$(date +%-S)

这个脚本的思路是,死循环,每3秒ping一次redis集群中的所有服务器,如果有问题就写预警信息,如果全部正常,那么没2小时也写一次预警信息,代表ping脚本的心跳正常。
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI