linux环境中,多个命令之间,通过&& ||执行,命令之间执行的逻辑是什么?

需求描述

  最近在写一个脚本的时候,要判断一个文件是否存在,有怎么样,没有就创建,这个时候

  看到了一个test 结合 || 或者 &&的写法,就查看了下资料记录下是怎么个玩法。

操作过程

1.判断一个脚本是否存在,如果存在就提示文件存在

[mysql@testvm01 baks]$ ls -l
total 0
-rw-rw-r--. 1 mysql mysql 0 Jan  9 14:33 innobin.log
[mysql@testvm01 baks]$ test -e innobin.log && echo "file exists"        #cmd1&&cmd2的方式,cmd1执行文件存在,反馈状态值是0,然后执行cmd2
file exists

2.判断一个脚本是否存在,如果不存在就提示不存在

[mysql@testvm01 baks]$ ll
total 0
-rw-rw-r--. 1 mysql mysql 0 Jan  9 14:33 innobin.log
[mysql@testvm01 baks]$ test -e innobinNew.log || echo "file not exists"   #cmd1||cmd2的方式,cmd1的返回状态值$?不是0,那么执行了cmd2.这里cmd1执行了,但是文件不存在
file not exists

小结

linux环境中,多个命令执行,有以下逻辑。

  cmd1 && cmd2 && cmd3                      #如果cmd1执行完毕,执行的返回状态是0,那么就执行cmd2,如果cmd2执行且返回状态是0,执行cmd3,如此进行下去。

  cmd1||cmd2||cmd3                                #如果cmd1执行且返回状态不是0,执行cmd2,如果cmd2执行且返回状态值不是0,执行cmd3,依次进行下去。

文档创建时间:2019年1月9日14:38:59

原文地址:https://www.cnblogs.com/chuanzhang053/p/10244288.html