Bash if语句带逻辑OR

时间:2014-06-25 21:57:51

标签: if-statement logical-operators

我希望命令仅在字符串变量不等于到foo 任何以bar开头的单词时执行。

if [[ $string != "foo" || $string != bar* ]]; then
commands
fi

当$ string = foo并且我使用以下代码时,它工作正常,没有命令执行:

if [[ $string != "foo" ]]; then
commands
fi

但是当我用||添加第二部分时这些命令在不应该执行时执行。

1 个答案:

答案 0 :(得分:5)

您需要,而不是

 if [[ $string != "foo" && $string != bar* ]] ...

你的代码所说的是"如果字符串不等于foo,或者字符串不以bar&#34开头,那么一定是真的。 - 这对所有字符串都是正确的。

你需要说的是"字符串不等于foo,字符串不能以bar"开头。

(您可能还希望在$string附近加上双引号,如果它有可能是空的。)