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基本功能(多命令顺序执行)