ITPub博客

首页 > Linux操作系统 > Linux操作系统 > line 40: 09: value too great for base (error token is "09")

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

原创 Linux操作系统 作者:running_life 时间:2017-05-15 15:16:02 0 删除 编辑
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脚本的心跳正常。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29822273/viewspace-2139085/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 一例log file sync
请登录后发表评论 登录
全部评论

注册时间:2014-08-24

  • 博文量
    23
  • 访问量
    31251