编写脚本时以年月日为目录时值得注意的地方

在写脚本中 按年月日建立目录时要注意的写法,有的人可能会使用这样的写法:

YEAR=`date +%Y`
MONTH=`date +%m`
DAY=`date -d yesterday +%d`

mkdir -p /tmp/$YEAR/$MONTH/$DAY

执行效果:
[root@elain ~#]bash -x aa.sh
++ date +%Y
+ YEAR=2011
++ date +%m
+ MONTH=08
++ date -d yesterday +%d
+ DAY=31             
+ mkdir -p /tmp/2011/08/31
[root@elain ~#]ll /tmp/2011/08/31/
总计 0

从效果看似乎 没什么问题,但到月末就会发现,会出现问题的,比如想要在2011/08/01这一天执行这个脚本,创建 2011/07/31这个目录 ,会发现它创建的目录成了 2011/08/31  这样一来,可能会导致脚本中的其它执行全部错误,关于数据的一些操作,这样就会很危险的。

为了避免出现这种情况,我们应该在写脚本时,像这种创建以年月日为目录,且在当天创建以昨天为日期的目录的脚本里,应特别注意,在这里我给出一种方法,其实也很简单,

DAY=`date -d yesterday +/%Y/%m/%d`    # or  `date -d '-1 day' +/%Y/%m/%d`

mkdir -p /tmp/$DAY

执行效果:
[root@elain ~#]bash -x aa.sh
++ date -d yesterday +/%Y/%m/%d
+ DAY=/2011/07/31
+ mkdir -p /tmp//2011/07/31
[root@elain ~#]ll /tmp/2011/
总计 4
drwxr-xr-x 3 root root 4096 08-01 13:34 07
[root@elain ~#]ll /tmp/2011/07/31/
总计 0

这样创建,就不会出现如上问题。

转载请注明: 转载自http://www.elain.org

本文链接地址:编写脚本时以年月日为目录时值得注意的地方


本文转自 elain2012 51CTO博客,原文链接:http://blog.51cto.com/elain/628917


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值