本文共 959 字,大约阅读时间需要 3 分钟。
在写脚本中 按年月日建立目录时要注意的写法,有的人可能会使用这样的写法:
YEAR=` +%Y`
MONTH=` +%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