shell求指定日期前N天的日期

背景描述


2016年的双十一注定是一个轰动全球的“节日”啊。。。。
由于猫儿在10月份已经开始宣传,云baba的孩儿们都开始准备囤货了,作为品质不贵的精品特卖网,10月流量多少还是受到了影响。然后的然后,上层要对比2015年10月的数据,时间比较久远了,一年来hadoop上的数据经过了很多次调整和处理,当然我们dw就是干这事儿的,既然老板需要,我们当然的处理,遇到的最直接的问题是很多数据需要重新计算。只好吭哧吭哧的写脚本刷数据。。。在准备脚本的过程中,就需要根据给定的日期处理数据,以及清理超过30天的中间数据。
因此有了下面的需求:根据给定的日期,计算出N天前的日期

创建测试文件test.sh

#!/bin/sh
. /etc/profile

# 参数:
# args[0] ,数据日期,日期格式yyyy-MM-dd
# 取30天以前的日期

function get_date_30daysbefore()
{
    sec=`date -d $1 +%s`
    sec_30daysbefore=$((sec - 86400*30))
    days_before=`date -d @$sec_30daysbefore +%F`
    echo $days_before
}

if [ $# == 1 ]; then
   today=$1
   dates_30=`get_date_30daysbefore $1`
else
   today=`date -d -1days '+%Y-%m-%d'`
   dates_30=`date -d -30days '+%Y-%m-%d'`
fi

echo $today
echo $dates_30
无参运行
## 不带参数,从当前时间开始算
$ ./test.sh

2016-10-28
2016-09-29

传参运行
$ ./test.sh  2015-10-29
2015-10-29
2015-09-29

Done Done Done

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容