Shell 带有两个或多个条件的If语句
我正在修改一个脚本,但不知道如何在if语句中编写多个条件。我想用AND连接这两个条件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 [ 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]
是可能的,但是。而且,据我所知,这两个不一样。后者不会尽快中止。