1

我正在修改一个脚本,但不知道如何在 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 来做同样的事情,但代码对我来说不是那么清楚。

4

2 回答 2

2

试试这个:

if [ $envoi1 -eq 2 ] && [ $envoi2 -eq 0 ] ; then
  envoi = 1
fi
于 2013-02-13T08:26:03.183 回答
1

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

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

但是,[[它不是 POSIX,如果您使用的是/bin/shshell,它将无法工作。因此,如果需要便携性,请使用:

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

另请注意,在分配变量时,您不应在=.

于 2013-02-13T08:40:24.673 回答