背景描述
2016年的雙十一注定是一個轟動全球的“節(jié)日”啊礁哄。构罗。。智玻。
由于貓兒在10月份已經(jīng)開始宣傳遂唧,云baba的孩兒們都開始準(zhǔn)備囤貨了,作為品質(zhì)不貴的精品特賣網(wǎng)吊奢,10月流量多少還是受到了影響盖彭。然后的然后纹烹,上層要對比2015年10月的數(shù)據(jù),時間比較久遠(yuǎn)了召边,一年來hadoop上的數(shù)據(jù)經(jīng)過了很多次調(diào)整和處理铺呵,當(dāng)然我們dw就是干這事兒的,既然老板需要隧熙,我們當(dāng)然的處理片挂,遇到的最直接的問題是很多數(shù)據(jù)需要重新計(jì)算。只好吭哧吭哧的寫腳本刷數(shù)據(jù)贞盯。音念。。在準(zhǔn)備腳本的過程中躏敢,就需要根據(jù)給定的日期處理數(shù)據(jù)闷愤,以及清理超過30天的中間數(shù)據(jù)。
因此有了下面的需求:根據(jù)給定的日期件余,計(jì)算出N天前的日期
創(chuàng)建測試文件test.sh
#!/bin/sh
. /etc/profile
# 參數(shù):
# args[0] ,數(shù)據(jù)日期,日期格式y(tǒng)yyy-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
無參運(yùn)行
## 不帶參數(shù)讥脐,從當(dāng)前時間開始算
$ ./test.sh
2016-10-28
2016-09-29
傳參運(yùn)行
$ ./test.sh 2015-10-29
2015-10-29
2015-09-29
Done Done Done