Bash 如何将用户输入分配给一个字符串并与另一个字符串进行比较

Bash 如何将用户输入分配给一个字符串并与另一个字符串进行比较,bash,Bash,我试图从用户那里获取用户输入,然后通过收集更多用户输入或立即执行脚本来执行操作,但是我遇到了一点问题。以下是我目前掌握的代码: #!/bin/bash while true do read -p "Would you like to run the script with custom dates? (y/n) " answer case $answer in [yY]* ) export ANSWER=Y break;; [nN]*

我试图从用户那里获取用户输入,然后通过收集更多用户输入或立即执行脚本来执行操作,但是我遇到了一点问题。以下是我目前掌握的代码:

#!/bin/bash

while true
do
    read -p "Would you like to run the script with custom dates? (y/n) " answer

    case $answer in
    [yY]* ) export ANSWER=Y
            break;;

    [nN]* ) export ANSWER="N"
            exit;;

    * )     echo "Not a valid response, please answer with Y or N";;
    esac
done

if [$ANSWER = Y]
then
    echo "Answered yes"
else
    echo "Answered no"
fi
当我输入Y作为答案时,我得到一个错误:
/getRatings.sh:第18行:[Y:command not found


我对bash非常陌生,我确信我错过了一些非常简单的东西,有人知道如何让它工作吗?

错误
/getRatings.sh:line 18:[Y:command not found
意味着, 在脚本
/getRatings.sh
的第18行,shell尝试执行
[Y
命令,但找不到它。 这是因为您输入了
Y
作为答案, 然后
[$ANSWER
被解释为
[Y
。 但是您想使用
[
内置, 为此,您需要在
[
后面加一个空格。 顺便说一句,也在
]
之前

[
之后不加空格类似于在任何命令之后不加空格。例如,如果您编写
lssome/path
,而不是
ls some/path
,则显然不起作用

因此,解决方法非常简单:

if [ $ANSWER = Y ]
顺便说一句,由于您在回答不是“是”时退出,因此永远不会到达
回显“回答否”

此外,您很可能不需要导出
变量
ANSWER


由于您对shell脚本还不熟悉,我建议您检查一下。您可以在那里复制paste Bash脚本,它可以为您发现并解释错误和错误做法。

我知道这很简单……感谢您的帮助,我将在11分钟内接受您的回答!刚刚看到您的编辑,感谢您提供的退出提示,我抓到了cookie cuter代码我很少使用脚本语言,所以我的很多代码都是从其他来源复制的,然后建立在其他网站上。也谢谢你的链接!