![시간을 알려주는 유닉스 스크립트](https://linux55.com/image/79295/%EC%8B%9C%EA%B0%84%EC%9D%84%20%EC%95%8C%EB%A0%A4%EC%A3%BC%EB%8A%94%20%EC%9C%A0%EB%8B%89%EC%8A%A4%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8.png)
일요일 이후의 일수를 나타내는 숫자를 입력하면 오늘이 무슨 요일인지 알려주는 스크립트가 필요합니다. 예를 들어
- 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
더 나은 결과를 얻을 수 있다는 것을 알았으므로 date
dict를 사용하는 기존 스크립트를 다음과 같이 변경할 수 있습니다.
#!/bin/bash
date -d "Sunday +$1 days" +%A
답변2
GNU 사용 date
:
$ days=130
$ date -d "Sunday +$days days" "+%A"
Thursday