시간을 알려주는 유닉스 스크립트

시간을 알려주는 유닉스 스크립트

일요일 이후의 일수를 나타내는 숫자를 입력하면 오늘이 무슨 요일인지 알려주는 스크립트가 필요합니다. 예를 들어

  • 0 = 일요일
  • 6 = 토요일
  • 9 = 화요일
  • 130 = 목요일

나는 이것이 약간의 while 루프가 필요하다고 생각하지만 시작하는 방법을 잘 모르겠습니다.

답변1

이건 어때:

#!/bin/bash
declare -A dow
dow[0]="Sunday"
dow[1]="Monday"
dow[2]="Tuesday"
dow[3]="Wednesday"
dow[4]="Thursday"
dow[5]="Friday"
dow[6]="Saturday"

echo ${dow[$(($@%7))]}

Bash에서 dict를 사용하는 것은 충분히 간결합니다. 다음과 같이 Python을 사용하여 이 스크립트를 작성할 수도 있습니다.

#!/bin/env python
import sys
dow={}
dow[0]="Sunday"
dow[1]="Monday"
dow[2]="Tuesday"
dow[3]="Wednesday"
dow[4]="Thursday"
dow[5]="Friday"
dow[6]="Saturday"
print(dow[int(sys.argv[1])%7])

Tonchev가 말했듯이 스크립트는 모든 해의 첫날이 항상 일요일이라고 가정하며 이는 질문에서 파생됩니다. 하지만 우리는 확실히 더 나은 일을 할 수 있습니다:

#!/bin/bash
date -d "${1}0101 +$2 days -1 day" +%A

더 나은 결과를 얻을 수 있다는 것을 알았으므로 datedict를 사용하는 기존 스크립트를 다음과 같이 변경할 수 있습니다.

#!/bin/bash
date -d "Sunday +$1 days" +%A

답변2

GNU 사용 date:

$ days=130
$ date -d "Sunday +$days days" "+%A"
Thursday

답변3

사용유클리드 나눗셈,예를 들어:

% echo $(( 130 % 7 ))
4

또는

% dow=$(( 9 % 7 )) 
% echo $dow
2

관련 정보