shell脚本中的&&和||,判断的标准是:判断的程序退出状态,为0是真,为1是假(相当于c++中的return,return 0就是没问题,否则就是有问题)
eg:
test -e test.sh && echo "exist" || echo "Not exist"
此语句可以判断test.sh是否存在,如果存在输出exist,不存在输出Not exist
解析:
如果test.sh存在,test -e test.sh为真,echo "exist"也为真,此时||左边整个条件的结果为真,则跳过echo “Not exist”;
如果test.sh不存在,test -e test.sh为假,则跳过echo “Not exist”,此时||左边整个条件的结果为假,则输出Not exist
(即echo “exist” 和 echo "Not exist"单条语句的结果都为真)
shell脚本中的&意思是把当前命令放到后台运行;
shell脚本中的|意思将 ‘|’前面命令的输出当做后面命令的输入
shell脚本中的&和|也可作逻辑运算符,那既然是逻辑运算符,则0就代表假,1就代表真
|
如果第一个参数非空且非0,则返回第一个参数的值,否则返回第二个参数的值,但要求第二个参数的值也是非空或非0,否则返回0。如果第一个参数是非空或非0时,不会计算第二个参数。
&
如果两个参数都非空且非0,则返回第一个参数,否则返回0。如果第一个参为0或为空,则不会计算第二个参数,直接输出0。
举个例子:
a=3
b=4
c=0
d=5
echo `expr $c \& $d` # 输出0 c为0,直接输出0
echo `expr $a \& $b` # 输出3 a和b都不为0,则输出第一个参数a的值
echo `expr $c \| $d` # 输出5 c为0,d不为0,则输出d的值
echo `expr $a \| $b` # 输出3 a不为0,直接输出a的值
echo `expr $a \| $a` # 输出0 两个参数都为0,则输出0