AIX系统用shell取前一天日期
写这篇博文原因是同事被新浪博客的一篇文章误导了。前年我也看过那篇文章,当时碰巧发现了问题,但只是自己在电脑上做了笔记,为了不让更多人被误导,在此写一文。
这篇误导大众的文章是:http://blog.sina.com.cn/s/blog_541a3cf10101expx.html
文章内取AIX系统前一天日期的命令 TZ=aaa24 date +%Y%m%d
是错误的!
小时数为 0~7 点时,得到的是大前天的日期。
我估计作者早上都在睡觉的吧,晚上的特例没错误就当标准了。
正确用法是:
AIX里取前一天的日期,16是由(24×1-8)获得TZ=BEIST+16 date +%Y%m%d
AIX里取前两天的日期,40是由(24×2-8)获得TZ=BEIST+40 date +%Y%m%d
AIX里取下一天的日期,32是由(24×1+8)获得,注意2个地方的正负号。TZ=BEIST-32 date +%Y%m%d
前N天
1 | X=24*N-8 |
下N天
1 | Y=24*N+8 |
使用前,确认环境的时区设置并做测试验证!不同环境可能导致结果和预想不同。
A 环境可能是这样的:
1 | AAA> echo $TZ |
B 环境可能是这样的:
1 | BBB> echo $TZ |
需要根据环境的时区确定基础时区设置,可以写一个脚本放 crontab 定时任务里执行一天,比对结果决定使用哪种写法:
1 | 30 * * * * /HOME/user/yesterday.sh >> /HOME/user/yesterday.log |
1 |
|