使用OR门在单个if语句外壳脚本中进行多个字符串比较

时间:2018-07-27 09:24:57

标签: unix if-statement logical-operators

我正在尝试将存储在字符串变量中的值与三个不同的可能值进行比较,如果它们中的任何一个都不匹配,则尝试使用逻辑运算符OR在单个if语句中引发错误。但是,即使存储在变量中的值与可能的值之一相同,每次我都会出错。请找到我尝试过的代码段。

    if [[ "$TYPE" != "LOCAL" || "$TYPE" != "REMOTE" || "$TYPE" != "BOTH" ]]; then
        echo -e "\n\tINCORRECT OR NULL ARGUMENTS PASSED. PLEASE VERIFY AND CORRECT THE USAGE MENTIONED AS BELOW: \n"
        Usage
        exit 1
    fi


    if [[ "$TYPE" != "LOCAL" ]] || [["$TYPE" != "REMOTE" ]] || [["$TYPE" != "BOTH" ]]; then
        echo -e "\n\tINCORRECT OR NULL ARGUMENTS PASSED. PLEASE VERIFY AND CORRECT THE USAGE MENTIONED AS BELOW: \n"
        Usage
        exit 1
    fi

1 个答案:

答案 0 :(得分:0)

我认为您想改用AND(&&)。参见:

OR:

irb(main):002:0> true || true || false
=> true

irb(main):003:0> true || true || true
=> true

irb(main):004:0> false || false || false
=> false

AND:

irb(main):005:0> true && true && false
=> false

irb(main):006:0> true && true && true
=> true

irb(main):007:0> false && false && false
=> false

仅将红宝石用于演示