字符串比较不起作用

时间:2011-06-14 09:43:59

标签: bash shell

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

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

if [ $A=$B ];
then
  echo 'strings are equal' 
fi

我做错了什么?

2 个答案:

答案 0 :(得分:16)

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

if [ "$A" = "$B" ];
then
  echo 'strings are equal' 
fi

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

否则,如果字符串“foo = bar”的长度> 0 ,则测试将被解释为 test。 见man test

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

答案 1 :(得分:7)

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

if [ $A = $B ];
       ^ ^
      There

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

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