我尝试将从日期实用程序获取的当前月份与用户输入进行比较。即使我输入的是 10 月,它也会给出错误的结果。
read -r month
current=`date +”%b”`
echo $current
if [ "$month" = "$current" ];
then
echo "match"
else
echo "no "
fi
我不明白为什么它总是输出“no”。任何帮助我都感激不尽。
答案1
通过运行代码并Oct
在提示符下输入,您将获得:
Oct # this is what you input at the prompt
”Oct” # this is what your input is compared against
no # this is the result of the comparison: not true
显然,如果您输入了比较结果,”Oct”
则结果为真:
”Oct”
”Oct”
match
如果你不想输入这两个结束双引号,只需将它们从比较字符串中删除:
read -r month
current=`date +%b`
echo $current
if [ "$month" = "$current" ];
then
echo "match"
else
echo "no "
fi
这样,您只需输入Oct
它就会匹配Oct
:
Oct
Oct
match
如果您想进一步开发您的程序,下一步可能是使比较不区分大小写:这样您的用户可以输入oct
,Oct
或而OCT
不必关心正确的大小写。
答案2
您的代码中有一个非常明显的错误。
它们是日期格式周围的引号
current=`date +”%b”`
对比
current=`date +"%b"` # this is the one you should be using