获取输入参数并将其传递到最新日期

获取输入参数并将其传递到最新日期

所以我尝试编写一个 shell 脚本来获取输入,如下所示:

bash whichday Jan 10 2017

它应该接受该输入并打印出它发生的日期。下面是我尝试使用的脚本:

#!/bin/bash
if [ $# -ne 3 ]
    then
    echo "Please enter the month day year (example: Jan 5 2002)"

else
    str=\"$1" "$2" "$3\"
    echo $str
    date -d $str +%A
fi 

但每次我运行这个,我都会得到以下输出:

"Jan 10 2017"
date: extra operand ‘2017"’
Try 'date --help' for more information.

当我做

date -d "Jan 10 2017" +"%A"

在命令行上,它输出正确的日期(星期二),但是应该执行完全相同的命令的脚本不起作用。请帮助,我不明白为什么会发生这种情况。

答案1

刚刚设置

str="$1 $2 $3"

进而

date -d "$str" +'%A'

通过转义双引号,您可以将它们作为 , 值的一部分$str,并且date无法解析它们。

您还可以str使用以下方法完全绕过该变量$*

echo "$*"
date -d "$*" +'%A'

相关内容