您的位置:首页 > 运维架构 > Shell

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

2011-06-15 17:06 411 查看

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.comhttp://blog.csdn.net/wireless_tech (专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作,联系我们:1780551083@qq.com)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: