在linux中,&和&&, |和|| ,&>
对应刚接触linux命令的小伙伴们来说,这些符号一定是很困扰的下面我们一起来看这些符号区别和用法 & 表示任务在后台执行,如要在后台运行 [[email?protected] local]# java -jar test.jar > log.txt & && 表示前一条命令执行成功时,才执行后一条命令 [[email?protected] tmp]# ls -l && cd .. | 表示管道,上一条命令的输出,作为下一条命令参数(输入) 如 : || 表示上一条命令执行失败后,才执行下一条命令, 如: [[email?protected] tmp]# als -l || cd .. 来看>符号是指:将正常信息重定向 如: find / -name “*.txt” > /tmp/log.txt &>可以将错误信息或者普通信息都重定向输出 && 和 || 属于逻辑运算符号 & 和 | 属于位操作符 ? ?-------------------------------------------------------------------------------------------------------------------- 一、&&和&的区别 1.1 相同点: ? ? &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。 ? 1.2不同点: 1.2.1. &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。 例如,对于if(str != null && !str.equals(“”))表达式。 当str为null时,后面的表达式不会执行,所以不会出现NullPointerException 如果将&&改为&,则会抛出NullPointerException异常。 再比如,If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长 ? 1.2.2.&作为为运算时,&是按位与操作,参加运算的两个数据按照二进制位进行“与”运算。 如果两个相应的二进制位都为1,那该位的结果值就是1,否则为0,即0&0=0,0&1=0,1&1=1,1&0=0。
?
2.1 相同点 :当二者表示或的时候,二者都true则true,否则为false。 2.2 不同点: 2.2.1 || ?也存在短路的问题,当前者为true时,则不会判断后面的表达(与上面的&&类似) 2.2.2 |是按位或操作,参加运算的两个数据按照二进制位进行“或”运算,如果两个相应的二进制位中只要有一个为1,则该位结果就是1,即为0|1=1、1|1=1、1|0=1、0|0=0。 ||是逻辑或运算符,直接看意思,a||b,若a、b中有一个为真,则a||b结果为真。 ?-------------------------------------------------------------------------------------------------------------------- 补充下:~与! ~是一个单目运算符,用来对一个二进制位按位取反,即0变成1,1变成0,比如~00001111=11110000。 !是逻辑非运算符,我们还是直接来看他的意思,!a的意思是:若a为真,则!为假,若a为假则!a为真。--------------------- (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |