Bash不理解超级容易if语句

Nho*_*hor 0 bash if-statement

我是一名新手,今晚刚开始做一些简单的剧本.这是一个来自HackerRank的超级简单的任务,但是我无法理解为什么我的解决方案不起作用并且相信我,我尝试过很多.输入只是一个字母,'y','Y','n'或'N','y'和'Y'的输出应为'YES','N'和'n'的输出应为'NO' .我的解决方案在这里:

read letter

if (($letter == "y"))
then
    echo "YES"
elif (($letter == "Y"))
then
    echo "YES"
else
    echo "NO"
fi
Run Code Online (Sandbox Code Playgroud)

但仍然输出总是'YES',即使对于像'G'这样的随机字母也是如此.我不知道这个freaknig bash是如何工作的,请有人向我解释一下!

Joh*_*ica 7

((...))用于算术.对于字符串比较,使用[[ ... ]],[ ... ]test.(注意括号内的空格.它们不是可选的.)

if [[ $letter == "y" ]]
then
    echo "YES"
elif [[ $letter == "Y" ]]
then
    echo "YES"
else
    echo "NO"
fi
Run Code Online (Sandbox Code Playgroud)

您也可以使用case块来执行此操作.

case $letter in
    [yY]) echo "YES";;
    *)    echo "NO";;
esac
Run Code Online (Sandbox Code Playgroud)