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

时间:2016-05-06 16:23:45

标签: 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]* ) 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非常陌生,我确信我错过了一些超级简单的东西,有谁知道如何使这项工作?

1 个答案:

答案 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脚本,它可以为您发现并解释错误和不良做法。