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代码我很少使用脚本语言,所以我的很多代码都是从其他来源复制的,然后建立在其他网站上。也谢谢你的链接!