時間を知らせる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

より良い結果が得られることがわかったので、datedictを使用する既存のスクリプトを次のように変更できます。

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

おすすめ記事