命令执行的判断语句(; && ||)

不考虑命令相关性的连续命令执行 
cmd1;cmd2      //分号前的命令执行完之后会立即执行分号后的命令。

考虑到命令之间的关联性 
比如想要在某个目录下面新建一个文件,当该目录存在时,才建立;如果不存在,就不建立。这时两个命令是有关联性的,前一个命令是否成功执行与后一个命令是否执行有关。需要借助 命令回传码的概念。若前一个命令执行的结果正确,在Linux下面会回传一个 $?=0的值。"$?"即“命令回传码”。

例:
ls /tmp/aaa && touch /tmp/aaa/bbb                              //当ls执行成功时,会建立bbb文件;当ls执行失败时,touch命令不执行。
ls /tmp/aaa || mkdir /tmp/aaa                                        //当ls执行成功时,不执行mkdir命令;当ls执行失败时,执行mkdir命令。
ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe   //当ls命令执行不成功时,创建abc文件夹,创建成功后,touch文件。
                                                                                    当ls命令执行成功时,mkdir不执行,$?继续往后传,touch文件。
                                                                                    综上,无论有没有/tmp/abc这个文件,都会建立/tmp/abc/hehe文件。

猜你喜欢

转载自blog.csdn.net/pengchengliu/article/details/80562876