在编写shell的时候,经常会使用的&&和||,那么他们是什么意思呢?
&&判断式是这样的,如果前面的一个命令回传的是0,也就是正确,那么就执行后面的指令,如果前面的指令回传非0(错误的),那么就不去执行后面的指令。
||的使用正好与&&相反,如果前面的指令执行结果返回错误值,那么就可以执行后面的指令。
下面是两个例子,来分析一下
#ls /data/sh && mkdir /data/sh/sh1
上面的指令说明了,如果/data/sh目录存在,那么就在/data/sh目录下再创建一个sh1的目录
#ls /data/sh2 || mkdir /data/sh2
上面的指令说明了,要是.data/sh2目录不存在,那么就去创建/data/sh2这个目录
-----------------------------------------------------------------------
shell的标准输入默认的是键盘,也可以试文件或者管道|
标准输出默认是终端同样也可以是文件或者管道
标准错误默认也是终端,可以试文件等
标准的输入、输出、和错误输出分别表示STDIN STDOUT STDERR 也可以用数字表示 0 1 2
有了以上的解释就明白了
command >log.log 2>&1
2> 代表的是标准输出的重定向
& 是等同于的意思
2>&1 意思是标准错误输出等同于标准输出
command >log.log 2>&1 也就是标准输出 和 标准错误输出 都输入到了log.log文件
&&判断式是这样的,如果前面的一个命令回传的是0,也就是正确,那么就执行后面的指令,如果前面的指令回传非0(错误的),那么就不去执行后面的指令。
||的使用正好与&&相反,如果前面的指令执行结果返回错误值,那么就可以执行后面的指令。
下面是两个例子,来分析一下
#ls /data/sh && mkdir /data/sh/sh1
上面的指令说明了,如果/data/sh目录存在,那么就在/data/sh目录下再创建一个sh1的目录
#ls /data/sh2 || mkdir /data/sh2
上面的指令说明了,要是.data/sh2目录不存在,那么就去创建/data/sh2这个目录
-----------------------------------------------------------------------
shell的标准输入默认的是键盘,也可以试文件或者管道|
标准输出默认是终端同样也可以是文件或者管道
标准错误默认也是终端,可以试文件等
标准的输入、输出、和错误输出分别表示STDIN STDOUT STDERR 也可以用数字表示 0 1 2
有了以上的解释就明白了
command >log.log 2>&1
2> 代表的是标准输出的重定向
& 是等同于的意思
2>&1 意思是标准错误输出等同于标准输出
command >log.log 2>&1 也就是标准输出 和 标准错误输出 都输入到了log.log文件