【经验总结】shell 日期小技巧

shell 日期小技巧

by eagoo



    输出两个日期之间的日期列表,很多时候需要处理一段日期区间的文件或日志,系统没有直接的命令支持,一下脚本输出两个日期间的日期列表。

 
    #!/bin/bash
    if [ $# -eq 2 ];then
     date1=$1
    
     date2=$2

    fi

    if [ $# -eq 1 ];then

     date1=$1

     date2=$1

 

    fi

    date1=`date +%Y-%m-%d -d "$date1 0 days ago"`
    date2=`date +%Y-%m-%d -d "$date2 0 days ago"`

    #echo $date1" "$date2

    if [ ${#date1} -ne 10 -o ${#date2} -ne 10 ];then

     echo "invalid input usg:datelist.sh yyyy-mm-dd yyyy-mm-dd"

     exit

    fi

 
    if [[ "$date1" > "$date2" ]];then

           echo "datelist.sh yyyy-mm-dd yyyy-mm-dd"

           exit

    fi

    while [ "$date1" /< "$date2" ] || [ "$date1" = "$date2" ]

    do

           echo $date1

           date1=`date +%Y-%m-%d -d "$date1 -1 days ago"`

    done

 
 
    很多日志脚本都需要处理日期,如日志名称中有日期,默认是昨天的日期,有参数的作为日期的重新操作

 
    #!/bin/bash
    if [ $# -eq 1 -a ${#1} -eq 10 ];then
       date=$1

       date2=`date +%Y%m%d -d "$date 0 days ago"`

    else

     if [ $# -eq 1 -a ${#1} -eq 8 ];then

       date2=$1;

       date=`date +%Y-%m-%d -d "$date2 0 days ago"`

     else

       date=`date +%Y-%m-%d -d "1 days ago"`

       date2=`date +%Y%m%d -d "1 days ago"`

     fi

    fi


本文原创自无线技术运营空间: http://wireless.qzone.qq.com 及 http://blog.csdn.net/wireless_tech (专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作,联系我们:1780551083@qq.com)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值