Bash 字符串比较不需要';行不通

Bash 字符串比较不需要';行不通,bash,shell,Bash,Shell,出于某种原因,此脚本打印“字符串相等” 我做错了什么?你必须在等号周围留下一个空格: if [ "$A" = "$B" ]; then echo 'strings are equal' fi 编辑:请注意变量周围的引号。没有它们,如果其中一个是空的,你就会陷入麻烦 否则,如果字符串“foo=bar”的长度大于0,则该测试将被解释为测试。 参见人工测试: ... STRING equivalent to -n STRING -n STRING the

出于某种原因,此脚本打印“字符串相等”


我做错了什么?

你必须在等号周围留下一个空格:

if [ "$A" = "$B" ];
then
  echo 'strings are equal' 
fi
编辑:请注意变量周围的引号。没有它们,如果其中一个是空的,你就会陷入麻烦

否则,如果字符串“foo=bar”的长度大于0,则该测试将被解释为测试。
参见
人工测试

   ...
   STRING equivalent to -n STRING
   -n STRING
          the length of STRING is nonzero
   ...

在equals字符周围应该有空格:

if [ $A = $B ];
       ^ ^
      There
此外,您应该引用变量,如下所示:

if [ "$A" = "$B" ];

还值得指出的是,您做了正确的事情,并在变量周围添加了引号。如果您正在比较不带引号的字符串,而其中一个字符串为空,则由于测试格式错误,脚本将退出。@Kyle:是的,您是对的。我应该提到这个事实。
if [ "$A" = "$B" ];