我想编写一个 bash 脚本来读取键盘输入(日期 dd:mm:yy),将其存储在变量中,然后回显它对应的日期,即
输入 : 03/08/2015
输出:周三
我在格式化时遇到一些问题,非常感谢任何帮助!
答案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