'데이터 엔지니어'로 성장하기

정리하는 걸 좋아하고, 남이 읽으면 더 좋아함

기타/Linux

linux) bash script로 yyyymmdd 뽑기

MightyTedKim 2023. 1. 9. 22:23
728x90
반응형

예상 독자

- bash script로 달력 구현이 필요하신 분

- airflow jinja 작업 전에 테스트가 필요하신 분


1년치 데이터를 이전하는 작업을 하게 되었는데

매일 해야하는 작업이라 airflow로 구현하기로 결정햇어요

 

일단 script로 for loop 돌려서, $1으로 입력받는 값을 넘기는 방식으로 테스트를 했어요

#!/bin/bash
kdts="$@"
for kdt in $kdts
do
  # if .bak backup file exists, read next file
 echo kdt=${kdt}
  mc mirror --overwrite ceph-source/testkdt=${kdt} ceph-target/test/kdt=${kdt}
 echo kdt=${kdt} finished
done

그런데 365개 출력하는 방법이 있을 것 같아서 검색해봣어요

airflow jinja로 하면 되기는 하지만 그냥 궁금해서....ㅋㅋㅋ

#!/bin/bash

M=`printf "%.2d" $2`
STARTDAY="$1/$M/01"
LASTDAY=$(date -d "$STARTDAY + 1 month - 1 day" "+%d")

for i in $(seq 1 $LASTDAY); do
  D=`printf "%.2d" $i`
  echo "$1$M$D"
  echo kdt="$1$M$D"
  mc mirror --overwrite ceph-source/testkdt=${kdt} ceph-target/test/kdt=${kdt}
  echo kdt=${kdt} finished
done

./test.sh 2022 01

./test.sh 2022 02

./test.sh 2022 03

이런식으로 하면 한달치 데이터를, 하루양만큼 반복해서 복사할 수 있으니까  편해지더라고

728x90
반응형