Bash:if-then匹配多个条件,如果所有条件都为true

Bash:if-then匹配多个条件,如果所有条件都为true,bash,Bash,我正在写一个脚本,检查3个不同的变量,并匹配true。然而,我需要它只在所有条件匹配时返回true。现在,如果我的操作符列表中只有一个或两个条件匹配,则返回true if [ -z "$VAR3" ] || [ "$VAR1" -ge 10 ] || [ "$VAR2" != "WORKING" ]; then echo "app failed "$VAR1" check-ins" exit 2 elif [ -n "$VAR3" ] || [ "$VAR1" -le 10 ]

我正在写一个脚本,检查3个不同的变量,并匹配true。然而,我需要它只在所有条件匹配时返回true。现在,如果我的操作符列表中只有一个或两个条件匹配,则返回true

if [ -z "$VAR3" ] || [ "$VAR1" -ge 10 ] || [ "$VAR2" != "WORKING" ]; then
    echo "app failed "$VAR1" check-ins"
    exit 2

elif [ -n "$VAR3" ] || [ "$VAR1" -le 10 ] || [ "$VAR2" == "WORKING" ]; then
    echo "$VAR3" pid active connection is "$VAR2"
    exit 0
fi

如果我只是将| |替换为&&&

是,
|
表示
逻辑运算符,则如果至少有一个运算符为
true
,则返回
true
&
表示
逻辑运算符,当且仅当所有运算符均为
true

if [ -z "$VAR3" ] && [ "$VAR1" -ge 10 ] && [ "$VAR2" != "WORKING" ]; then
    echo "app failed "$VAR1" check-ins"
    exit 2

elif [ -n "$VAR3" ] && [ "$VAR1" -le 10 ] && [ "$VAR2" == "WORKING" ];    then
    echo "$VAR3" pid active connection is "$VAR2"
    exit 0
fi

您是否尝试将
|
更改为
&&
…?您可能会感兴趣地了解。(这也是您不应该将
添加到
路径
并命名您的测试程序
test
的原因之一)