셸 날짜

1324 단어
배경 설명
2016 년 의 쌍십일 은 전 세 계 를 뒤 흔 드 는 '명절' 이 될 운명 이 야...고양이 가 10 월 에 이미 홍 보 를 시 작 했 기 때문에 운 바 바 의 아이들 은 모두 사재 기 를 준비 하기 시 작 했 고 품질 이 비 싸 지 않 은 정품 특 판 망 으로서 10 월 의 유 동량 이 다소 영향 을 받 았 다.그 다음 에 상층 부 는 2015 년 10 월 의 데 이 터 를 비교 해 야 한다. 시간 이 비교적 오래 되 었 다. 1 년 동안 hadop 의 데 이 터 는 여러 차례 조정 과 처 리 를 거 쳤 다. 물론 우리 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

좋은 웹페이지 즐겨찾기