入力日、出力日を含むスクリプト

入力日、出力日を含むスクリプト

キーボード入力(日付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

関連情報