如果声明有两个或更多条件

时间:2013-02-13 08:20:56

标签: shell if-statement

我正在修改脚本,不知道如何在if语句中写入多个条件。我想用AND来连接这两个条件。

if [ envoi1 -eq 2 ];then
    if [ envoi2 -eq 0 ];then
        echo 'Ahora mismo.'
        envoi = 1
    fi
else
    if [ envoi2 -eq 1 ];then
        if [ envoi1 -eq 1 ];then
            echo 'Situacion Normal.'
            envoi = 1
        fi
    else
        echo 'Raruno'
        envoi=`expr $envoi1 + envoi2`
    fi
fi

现在我使用嵌套if来做同样但代码对我来说不太清楚。

2 个答案:

答案 0 :(得分:2)

试试这个:

if [ $envoi1 -eq 2 ] && [ $envoi2 -eq 0 ] ; then
  envoi = 1
fi

答案 1 :(得分:1)

bash中,您可以按如下方式使用[[

if [[ $envoi2 -eq 1 && $envoi1 -eq 1 ]]; then 
    echo "Situacion Normal."
    envoi=1
fi

但是,[[不是POSIX,如果您使用的是/bin/sh shell,则无效。因此,如果需要便携性,请使用:

if [ $envoi2 -eq 1 -a $envoi1 -eq 1 ]; then
    echo "Situacion Normal."
    envoi=1
fi

另请注意,在分配变量时,=的任何一侧都不应有空格。