Bash 语句中的 3 个或条件

3 OR Conditions in Bash Statement

我认为这很简单,但我总是出错。我想在我的 if else 语句中使用 3 个 OR 条件。这些是我尝试过的变体。我犯了什么语法错误?

   if [[ $var == "a" ]] || [[ $var == "b" ]] || [[ $var == "c" ]]; then
#Do Stuff
    else
#Do Stuff
    fi

    if [ $var == "a" ] || [ $var == "b" ] || [ $var == "c" ]; then
#Do Stuff
    else
#Do Stuff
    fi

    if [[ $var == "a" ] || [ $var == "b" ]] || [ $var == "c" ]; then
#Do Stuff
    else
#Do Stuff
    fi

    if [[ $var == "a"  || $var == "b" || $var == "c" ]]; then
#Do Stuff
    else
#Do Stuff
    fi

第一个和最后一个版本在我看来和行为上都是正确的。您确定您使用的是 bash 而不是 sh 吗?

请注意,[[[ 都是“命令”(实际上是内置命令,我认为这是一个恰当的术语)并且略有不同。基本上你想使用 [[ 除非你想要与旧 shell 的遗留兼容性。如果使用 [ 还有其他注意事项,例如它可能会导致空字符串比较出现问题。

顺便说一句,第二个版本应该可以正常工作,但是你会遇到上面提到的问题 - 第三个版本不好。