Bash如果字符串检查

时间:2011-11-14 18:19:55

标签: bash

我正在评估以下表达式。即使CMD是START或STARTED,它总是评估为真。我做错了吗?

if [ "$CMD"="START" ]; then
    echo fi
fi

4 个答案:

答案 0 :(得分:8)

尝试空格

if [ "$CMD" = "START" ] ; then
     echo fi
fi

答案 1 :(得分:1)

您需要在=周围留出空格。

#CMD="STARTED"
#if [ "$CMD" = "START" ] ; then echo fi; fi
#CMD="START"
#if [ "$CMD" = "START" ] ; then echo fi; fi
fi
#

答案 2 :(得分:1)

来自http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_02.html

  [] vs. [[]]
     

与[,[[防止变量值的单词分割相反]。因此,如果   VAR =“var with spaces”,你不需要在测试中双引号$ VAR    - 尽管使用引号仍然是一个好习惯。此外,[[阻止路径名扩展,因此带有通配符的文字字符串不会尝试   扩展到文件名。使用[[,==和!=将字符串解释为   正确的shell glob模式要匹配的值   左,例如:[[“value”== val *]]。

所以,试试:

if [[ "$CMD" == "START" ]]; then
    echo "fi"
fi

答案 3 :(得分:0)

你应该添加空格:

if [ "$CMD" == "START" ]; then
...
fi