用于报时的 Unix 脚本

用于报时的 Unix 脚本

我需要一个脚本,当我输入代表自星期日以来的天数的数字时,它会告诉我今天是哪一天。例如

  • 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

答案3

使用欧几里得除法,例如:

% echo $(( 130 % 7 ))
4

或者

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

相关内容