unix shell取5个月前的时间

来源:互联网 发布:apache进程几十兆 编辑:程序博客网 时间:2024/04/29 15:01

因为hp-unix 服务器上,date 命令还不够完善,没有 -d 选项,在做取多少时间之前的时间显得特不灵活。

现有需求需要取的5个月之前的时间,实现代码如下:

#!/bin/shcurY=`date +%Y`curM=`date +%m`i=5  #5个月countdays=0 #5个月总天数while [ $i -gt 0 ]    #循环5次do  temp=`echo "$curM-$i"|bc`  tempM=$temp  tempY=$curY  if [ $temp -lt 0 ] ||  [ $temp -eq 0 ];then           #如果月份少于0或等于0则加12,年份减1     tempM=`echo "$temp+12"|bc`     tempY=`echo "$curY-1"|bc`  fi   monday=`cal $tempM $tempY|xargs|awk '{print $NF}'`   #得到一个月的天数(关键语句,*_^)   countdays=`echo $countdays+$monday|bc`               #累计5个月的天数  i=`echo "$i-1"|bc`doneecho "总天数:"$countdaysseconds=86400*$countdaysmydate=`perl -e "print sprintf '%04d%02d%02d%02d%02d%02d',(localtime(time()-$seconds))[5]+1900,(localtime(time()-$seconds))[4]+1,(localtime(time()-$seconds))[3],(localtime(time()-$seconds))[2],(localtime(time()-$seconds))[1],(localtime(time()-$seconds))[0]"`echo $mydate


 

0 0