字符串比较不起作用

syn*_*pse 9 bash shell

由于某种原因,这个脚本打印"字符串相等"

#!/bin/bash
A='foo'
B='bar'

if [ $A=$B ];
then
  echo 'strings are equal' 
fi
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

bmk*_*bmk 16

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

if [ "$A" = "$B" ];
then
  echo 'strings are equal' 
fi
Run Code Online (Sandbox Code Playgroud)

编辑:请注意变量周围的引号.如果没有它们,如果其中一个是空的,你将遇到麻烦.

否则,如果字符串"foo = bar"的长度> 0,则测试将被解释为test.
man test:

   ...
   STRING equivalent to -n STRING
   -n STRING
          the length of STRING is nonzero
   ...
Run Code Online (Sandbox Code Playgroud)


Ted*_*ddy 7

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

if [ $A = $B ];
       ^ ^
      There
Run Code Online (Sandbox Code Playgroud)

另外,你应该引用变量,如下所示:

if [ "$A" = "$B" ];
Run Code Online (Sandbox Code Playgroud)