AI智能
改变未来

『忘了再学』Shell基础 — 7、Bash基本功能(多命令顺序执行)

[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

结论:这是一个固定格式。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 『忘了再学』Shell基础 — 7、Bash基本功能(多命令顺序执行)