스크립트에서 어제 날짜를 월요일로 설정합니다.

스크립트에서 어제 날짜를 월요일로 설정합니다.

저는 월요일부터 금요일까지 매일 아침 백업 파일이 있는지 확인하는 스크립트를 작성하고 있습니다. 이러한 백업 파일은 월요일부터 금요일까지 매일 마지막 시간에 저장되며 간단히 이름이 지정됩니다.

02_10_15

문제가 있습니다. 월요일에 스크립트를 실행하면 다음과 같이 표시됩니다.

09_10_15

파일 이름이 다음과 같기 때문에 파일을 찾을 수 없습니다.

06_10_15

어제 대신

08_10_15

아래에서 내 날짜 코드를 찾아보세요.

#Create variables
yday=$(date --date yesterday +"%d_%m_%y")
#yday="02_10_15"
FileName=$(date --date yesterday +"%Y%m%d")

지난 금요일 월요일 특별한 날짜를 어떻게 알 수 있나요?

답변1

unset mon
[ $(date +%u) -eq 1 ] && mon='Fri'
yday=$(date --date="last ${mon}day" +"%d_%m_%y")

따라서 date +%u생산이 월요일에 이루어 1지면 변수는 다음으로 mon설정됩니다 .Fri- 날짜문자열은 입니다 last Friday. 그렇지 않으면 설정되지 않은 상태로 유지됩니다 last day( mon비어 있음).

답변2

정보 페이지에 따르면 GNU는 date사용할 수 있는 다른 형식을 허용합니다. 예는 다음과 같습니다.

FileName=$(date --date '1 day ago' +"%Y%m%d")
FileName=$(date --date 'last Friday' +"%Y%m%d")

그러나 "마지막 근무일" 또는 "주의 마지막 날"과 같은 변형은 지원하지 않는 것 같습니다. 스크립트를 주중(월요일~금요일)에만 실행해야 하거나 공휴일을 고려하는 경우 이 작업을 수행하려면 여러 줄이 필요합니다.

관련 정보