我试图从用户那里获得用户输入,然后通过收集更多用户输入或立即执行脚本来对其进行操作,但是我遇到了一些问题。这是我到目前为止的代码:
#!/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: line 18: [Y: command not found
我对bash非常陌生,我确信我错过了一些超级简单的东西,有谁知道如何使这项工作?
答案 0 :(得分:1)
错误./getRatings.sh: line 18: [Y: command not found
表示,
在脚本./getRatings.sh
中,在第18行,shell尝试执行[Y
命令,但找不到它。
这是因为您输入Y
作为答案,
然后[$ANSWER
被解释为[Y
。
但是你想使用[
内置,
为此你需要在[
之后加一个空格。
顺便提一下]
之前。
在[
之后没有放置空格类似于在任何命令之后没有放置空格。例如,如果您编写明显无效的ls some/path
,则代替lssome/path
。
所以修复就像这样简单:
if [ $ANSWER = Y ]
顺便说一句,因为当答案不是时退出,所以永远不会达到echo "Answered no"
。
此外,您很可能不需要export
ANSWER
变量。
由于您不熟悉shell脚本,我建议您查看http://www.shellcheck.net/。您可以在那里复制粘贴Bash脚本,它可以为您发现并解释错误和不良做法。