如何在Bash中正确比较变量和字符串?

如何在Bash中正确比较变量和字符串?,bash,Bash,我第一次编写bash脚本,我决定尝试比较两个字符串,尽管据我所知,我的语法是正确的,但仍然不起作用 我通读了几个老问题,他们没有提供任何我以前没有尝试过的东西 我尝试了以下方法: 使用==;=-情商 echo 'Enter the letter: ' read l if ["$l"='y' -o "$l"='Y'];then echo 'Yes' elif ["$l"='n' -o "$l"='N']; then echo 'No' else echo

我第一次编写bash脚本,我决定尝试比较两个字符串,尽管据我所知,我的语法是正确的,但仍然不起作用

我通读了几个老问题,他们没有提供任何我以前没有尝试过的东西

我尝试了以下方法: 使用==;=-情商

    echo 'Enter the letter: '
    read l
    if  ["$l"='y' -o "$l"='Y'];then echo 'Yes'
    elif  ["$l"='n' -o "$l"='N']; then echo 'No'
    else echo 'Try again dum dum'
    fi
它正确读取输入,但在比较两个字符串时,它会输出以下内容: YesNo.sh:第3行:[n=y:未找到命令 YesNo.sh:第4行:[n=n:未找到命令 请重试dum dum

Bash逻辑表达式(“[”和“[]”)要求标记用空格分隔

if  [ "$l" = 'y' -o "$l" = 'Y' ];then echo 'Yes'
elif  [ "$l" = 'n' -o "$l" = 'N' ]; then echo 'No'
else echo 'Try again dum dum'
fi

添加一个shebang,然后将您的脚本粘贴到那里:
-o
可能会引入歧义,并且已经过时。请改用
[…]|[…]
。既然您提到了它,
[[
根本不支持
-o
。一般来说,空格是shell语法中重要的分隔符。添加或删除空格会完全改变(或使)命令无效。因此,当您复制一个示例时,不要添加或删除它们并期望它正常工作。