Shell 中的字符串比较

Shell 中的字符串比较

我尝试将从日期实用程序获取的当前月份与用户输入进行比较。即使我输入的是 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

如果您想进一步开发您的程序,下一步可能是使比较不区分大小写:这样您的用户可以输入octOct或而OCT不必关心正确的大小写。

答案2

您的代码中有一个非常明显的错误。

它们是日期格式周围的引号

current=`date +”%b”`

对比

current=`date +"%b"` # this is the one you should be using

相关内容