所以我尝试编写一个 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'