前沿:某些情况下,很多命令想一次性输入,而不要分次执行,这可如何是好?
有两种方式可以解决上述问题,一种是写脚本(这个我们暂时不介绍),另外一种就是使用一些特殊符号来控制命令的连贯执行。
怎么控制呢?
1.顺序执行
command1;command2;command3
使用分号;将一系列的命令隔开,这样一来,分号前的命令执行完后就会立刻接着执行后面的命令了。
2.选择执行
当两个命令之间有相关性时,这个相关性主要判断的地方就在于前一个命令执行的结果似乎否正确,这需要使用到命令回传码$?,当前一个命令执行的结果为正确,在Linux下面会回传一个$?=0的值。根据这个回传码,我们就可以来判断后续的命令是否要执行了,如:
(1)&&
command1 && command2
若command1执行完毕且正确执行(即$?=0),则开始执行command2;
若command1执行完毕且为错误(即$?!=0),则不执行command2;
(2)||
command1 || command2
若command1执行完毕且正确执行(即$?=0),则不执行command2;
若command1执行完毕且为错误(即$?!=0),则开始执行command2;
举个例子:假设当前我们在tmp目录下,想要创建一个/tmp/adb/hehe文件,可以使用如下一行指令:
ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe
这行命令总共有三段,来解释下:
如果命令ls /tmp/abc执行完毕,且正确执行,即$?=0,表示tmp下有abc这个文件夹,那就不需要执行mkdir /tmp/abc来创建abc文件夹了,后续就直接执行touch /tmp/abc/hehe。
如果命令ls /tmp/abc执行完毕,且为错误,即$?=0,也就是终端提示在tmp下找不到abc这个文件夹,那就需要执行mkdir /tmp/abc来创建abc文件夹了,创建好了abc这个文件夹之后,就开始直接执行touch /tmp/abc/hehe。