今天在测试编写的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