키보드 입력(날짜 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