Unixでのカレンダーの問題

Unixでのカレンダーの問題

特定の年の対応する日付と日付を印刷したいと思います。

入力した年例は2018年で、月は2月です。だから出力が表示されます

Date.     Day  
1.        thursday
2.        Saturday
.
.
.
.
28.       Wednesday       

答え1

あなたはLinux初心者のための良い運動を説明しているので、宿題を与えませんが、あなたがそれを行うことができるように質問に答えます。

dateまず、このコマンドの使い方を学びますawk。このdateコマンドには曜日を数値形式で出力する機能があるので、コマンドラインにこれ​​を入力すると次のように曜日をdate +%u知ることができます。月曜日に。他の曜日には、たとえばdオプションを使用してくださいdate -d2018-02-22 +%u+%A「木曜日」など、地域の曜日名の形式コードもあります。このコマンドと他の多くの利点の詳細については、マニュアルページを参照してくださいdate

それから選択の余地があります。コマンドを繰り返してdate毎月毎日結果を印刷したり、快適であると感じるスクリプトやプログラミング言語を使用してデフォルトで繰り返すこともできます。たとえば、モジュロ数学演算子を使用して%週の 7 日間を繰り返しn%7caseそれをステートメントとして印刷したり、曜日名の 7 要素の配列を定義したりできます。たとえば、次は配列を定義して使用する方法ですbash

 dow=( Sun Mon Tues Wed Thu Fri Sat ) ; printf "%s\n" ${dow[4]}

今残っているのは、いつ停止するのかをループに伝えることです。あなたが扱っている月は何日ですか?おそらく12要素の配列を使用するのが最も簡単でしょう。各要素には、その月の日数が含まれます。うるう年の2月が29日であることを確認するには、外部テストを実行する必要があります。

を使用する場合awkできるこれを使用してください。しかし、ストリームエディタとして設計されており、ストリームを扱わないため、作業に最適なツールではありません。しかし、あなたの仕事なら必要 awkすると、ここで詰まります。

関連情報