저는 Linux 쉘 스크립팅을 처음 사용합니다. 현재 저는 일일 파티션에 2년간의 데이터를 저장해야 하는 프로젝트를 진행하고 있습니다. 매일 파티션에는 하나의 파일로 병합해야 하는 200개의 파일이 있습니다.
현재 날짜를 활용한 변수를 입력하는 코드를 개발했습니다. 아래는 코드 조각입니다. 수동 개입 없이 루프를 사용하는 방법을 찾고 있습니다. 일주일에 한 번 실행해야 합니다.
daysToDeduct=<number>
day1=$((daysToDeduct-1))
day2=$((daysToDeduct-2))
day3=$((daysToDeduct-3))
day4=$((daysToDeduct-4))
day5=$((daysToDeduct-5))
day6=$((daysToDeduct-6))
day7=$((daysToDeduct-7))
DAY1=`date --date="$day1 days ago" +%Y%m%d`
DAY2=`date --date="$day2 days ago" +%Y%m%d`
DAY3=`date --date="$day3 days ago" +%Y%m%d`
DAY4=`date --date="$day4 days ago" +%Y%m%d`
DAY5=`date --date="$day5 days ago" +%Y%m%d`
DAY6=`date --date="$day6 days ago" +%Y%m%d`
DAY7=`date --date="$day7 days ago" +%Y%m%d`
hadoop fs -getmerge /apps/..../$DAY1 /.../$DAY1
.
...
hadoop fs -getmerge /apps/..../$DAY7 /.../$DAY7
미리 감사드립니다
답변1
여기에 도움이 되는 몇 가지 코드가 있습니다.
#!/bin/bash
for i in $(seq 1 10)
do
echo $i: $(date --date="$i days ago" +%Y%m%d)
done
이 조각은 다음을 인쇄합니다.
1: 20191006
2: 20191005
3: 20191004
4: 20191003
5: 20191002
6: 20191001
7: 20190930
8: 20190929
9: 20190928
10: 20190927
- sec를 사용하여 1에서 200까지 반복합니다.
- 날짜로 정의합니다(그냥 인쇄합니다).
도움이 되었기를 바랍니다 :)
개선을 위해 @Stephen Kitt에게 감사드립니다!