셀스크립트로 시작날짜부터 끝날짜까지 모든 날짜를 출력하는 코드입니다.
이런게 왜 필요할까 싶겠지만 생각보다 꽤 많이 필요하고 알아두면 편할 때가 많습니다.
보통 날짜별로 데이터를 프로세싱하거나 날짜별로 어떤 일을 처리하는 스크립트를 구간내의 모든 날짜에 대해서 실행하고 싶을 때 쓰거나 합니다.
예를 들면 일별로 배치프로세싱을 만들어서 집계를 하거나 예측이나 최적화 등을 처리하는 어떤 프로세스가 있다고 할때 이런 프로세스를 몇일분을 구간을 줘서 각각 일별로 처리하거나 할 때 말입니다. 이 코드를 알아두면 일별로 실행하는 배치프로세스를 수정하지 않고도 일별로 실행이 가능합니다.
쉘스크립트로 이런 것을 작성하기 어려운 편인데 사실 패턴을 알고 나면 그렇게 어렵지 않습니다.
핵심은 while 구문과 date 코맨드를 잘 사용하는 것입니다.
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash begin_date="20220209" end_date="20220410" while ! [[ $begin_date > $end_date ]]; do echo $begin_date bash ./daily-batch-processing.sh $begin_date begin_date=$(date -d "$begin_date + 1 day" +%Y%m%d) done |