天天看点

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

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

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

++ 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/

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

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

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