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)