[toc]
Linux系统支持多条命令顺序执行,就是我可以依次输入多条命令后,统一按Enter键,顺序执行。
1、多命令执行符
;
在多个命令之间加
;
即可多命令顺序执行。
命令格式:
命令1 ; 命令2
说明:
- 多个命令顺序执行,命令之间可以没有任何逻辑联系。
[root@localhost ~]# ls ; date ; cd /etc/anaconda-ks.cfg install.log install.log.syslog2020 03月 29日 星期日 05:08:28 CST[root@localhost etc]#
- 不管前面的命令是否正确执行,后面的命令都会执行。
[root@localhost ~]# lswrqwr ; date ; cd /etc/-bash: lswrqwr: command not found2020 03月 29日 星期日 05:08:28 CST[root@localhost etc]#
2、多命令执行符
&&
&&
又叫逻辑与执行符。
命令格式:
命令1 && 命令2
说明:
- 当命令1正确执行($?=0),则命令2才会执行。
- 当命令1执行不正确($?≠0),则命令2不会执行。
- 命令1和命令2之间可以没有任何逻辑联系。
- 练习1:命令1正确执行。
[root@localhost ~]# ls && echo yesanaconda-ks.cfg install.log install.log.syslogyes
- 练习2:命令1不正确执行。
[root@localhost ~]# lsfgdf && echo yes-bash: lsfgdf: command not found
说明:
($?=0)
这里先不说什么意思,后边预定义变量在讲。
3、多命令执行符
||
||
又叫逻辑或执行符。
命令格式:
命令1 || 命令2
说明:
- 当命令1执行不正确($?≠0),则命令2才会执行。
- 当命令1正确执行($?=0),则命令2不会执行。
- 命令1和命令2之间可以没有任何逻辑联系。
- 练习1:命令1正确执行。
[root@localhost ~]# ls && echo noanaconda-ks.cfg install.log install.log.syslog
- 练习2:命令1不正确执行。
[root@localhost ~]# lsfgdfgg && echo no-bash: lsfgdfgg: command not foundno
4、
&&
和
||
联合应用
&&
和
||
两个执行符可以联合应用,来判断命令是否正确执行。
执行语句:
[root@localhost ~]# ls && echo yes || echo no
如果
ls
命令正确执行了,则
echo yes
命令就会执行,会输出一个
yes
。
echo no
命令判断前边
echo yes
命令执行了,则
echo no
命令则不会执行。
如果
ls
命令报错了,则
echo yes
命令就不会被执行,
echo no
命令需要判断前边的命令是否执行错误,因为
echo yes
命令没有执行,被跳过了,所以是判断
ls
命令是否报错,而
ls
命令报错了,则执行
echo no
命令,输出
no
。
换句话说,
ls
位置的命令,如果正确执行,则输出
yes
,如果错误执行,则输出
no
。(所以需要注意的是,需要判断命令执行是否出错,而不是命令是否执行。不执行的命令就被挖掉,不予判断。)
练习:
[root@localhost ~]# ls && echo yes || echo noanaconda-ks.cfg install.log install.log.syslogyes[root@localhost ~]# lsfgjhg && echo yes || echo no-bash: lsfgjhg: command not foundno
提出一个问题:
我能不能把上边命令中的
&&
和
||
的位置互换?
答案是不能。
直接看例子,自己推导:
[root@localhost ~]# ls || echo yes && echo noanaconda-ks.cfg install.log install.log.syslogno[root@localhost ~]# lsfgjhg || echo yes && echo no-bash: lsfgjhg: command not foundyesno
结论:这是一个固定格式。