bash script2023. 7. 27. 10:39

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/592720

예를 들어 2016년 10월 1일부터 2017년 2월 5일까지의 날짜를 연속으로 출력하는 방법이다. 시작 날짜와 종료 날짜의 형태를 년(4자리)월(2자리)일(2자리) 이렇게 정하면(예: 2016년 10월 1일 -> 20161001) 조건문에서 일반 수자처럼 대소 비교를 할 수 있으므로 while 반복문과 date를 조합하여 스크립트를 만들 수 있다. 아래의 예시를 보자.  

# 시작 날짜 2016년 10월 1일
start_date="20161001"
# 종료 날짜 2017년 2월 5일
end_date="20170205"
# cur_date 변수 초기값 설정(시작 날짜)
cur_date="$start_date"
# 종료 날짜까지 반복
while [[ $cur_date -le $end_date ]]
do
  # 날짜 출력
  date -d "$cur_date" "+%Y년 %m월 %d일"
  # cur_date 변수 갱신
  cur_date=`date -d "$cur_date + 1 day" "+%Y%m%d"`
done

변수 cur_date의 날짜값이 종료 날짜인 end_date보다 작거나 같으면 while 반복문이 유효하므로 해당 기간 동안 날짜 출력이 반복된다. cur_date의 날짜값은 date의 -d 옵션을 이용하여 갱신. -d 옵션에 대한 내용은 이전 게시물을 참고하자. 여기로

 

위의 스크립트를 기본으로 필요에 따라 응용을 해 볼 수 있다. 예를 들어 시작 날짜부터 3일 간격으로 날짜를 출력하고 싶다면 위의 예시에서 cur_date 변수를 갱신하는 부분을 아래와 같이 바꾸면 된다.

  cur_date=`date -d "$cur_date + 3 days" "+%Y%m%d"`

728x90
Posted by 반달가면