免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1489 | 回复: 0
打印 上一主题 下一主题

bash: 08: value too great for base (error token is [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-19 11:15 |只看该作者 |倒序浏览
前几天在写一个脚本, 每偶数个小时去服务器上去拉去一个按时间戳命名的文件:

HOUR_NOW="`date +%H`"
[ $((HOUR_NOW%2)) -eq 0 ] && HOUR_AGO=2 || HOUR_AGO=3
[ $# -gt 0 ] && TIME_STAMP=$1 || TIME_STAMP="`date -d "${HOUR_AGO} hours ago" +"%Y%m%d%H"`"  # 增加支持手工导入 时间格式为YYMMDDHH
date -d "${TIME_STAMP:0:8} ${TIME_STAMP:8:2}"  &>/dev/null || { echo "date format error, exit..."; exit 23; }  # 判断时间格式

但是脚本运行一天, 发现少了6点的数据, 看了脚本的运行日志, 发现这个错误: -bash: 08: value too great for base (error token is "08");  在网上搜了一下, date +%H产生的小时是类似01 02 ... 10 .... 23这样子的, 默认情况下, 不够2位的前面补零, 而$(())在做数学运算的时候, 把0开头的数字认为是8进制的, 所以$((08)), 就报了”value too great for base“这样的错误。

再查了一下date的手册, 发现:
-      (hyphen) do not pad the field
_      (underscore) pad with spaces
0      (zero) pad with zeros

所以, 使用 date +%-H 就可以产生 0 1 2 3 ... 12... 23 这样的输出, 而不是默认位数不是2位默认前面补零的输出格式...  修改 HOUR_NOW="`date +%H`" 为 HOUR_NOW="`date +%-H`" 即可得到解决

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/86696/showart_2031465.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP