キーボード入力(日付dd:mm:yy)を読み、それを変数に保存してから、その日付をエコーするbashスクリプトを作成したいと思います。
入力:2015年3月8日
出力:水曜日
フォーマットに問題があります。どんな助けでもいただければ幸いです!
答え1
date
-d
フラグ付きの入力を受け入れて印刷します。ただし、あなたのような入力フォーマットはMM / DD / YYYYとして扱われます。しかし、あまりにも難しくてはいけません。
まず、変数への入力を取得します。
read INPUT
入力をDD / MM / YYYYからMM / DD / YYYYに変更する必要があります。 sedとawkを使ってこれを行うことができます(次のようにすることもできますawk
:
INPUT=`echo $INPUT | awk -F '/' '{t=$1;$1=$2;$2=t;gsub(" ", "/");print;}'`
これでINPUTの形式が正しいので、それを入力してdate
日付のみを印刷します。
date -d $INPUT +%A
一緒に入れてください:
#!/bin/bash
read INPUT
INPUT=`echo $INPUT | awk -F '/' '{t=$1;$1=$2;$2=t;gsub(" ", "/");print;}'`
date -d $INPUT +%A
答え2
Perlにはいくつかの素晴らしい組み込み日付/時刻モジュールがあります:
$ perl -MTime::Piece -E '
print "Input date (dd/mm/YYYY): ";
chomp( $date = <> );
$datetime = Time::Piece->strptime($date, "%d/%m/%Y");
say $datetime->strftime("%e %B is a %A");
'
Input date (dd/mm/YYYY): 3/8/2015
3 August is a Monday