Shell 带有两个或多个条件的If语句

Shell 带有两个或多个条件的If语句,shell,if-statement,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 Norma

我正在修改一个脚本,但不知道如何在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来执行相同的操作,但代码对我来说不是很清楚。

尝试以下操作:

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

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

还要注意的是,当分配变量时,在
=

Ok的两边不应该有空格,就像在C/C++中一样。谢谢。为了完整性,
[$envoi1-eq 2-a$envoi2-eq 0]
是可能的,但是。而且,据我所知,这两个不一样。后者不会尽快中止。