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


    Linux系统支持多条命令顺序执行,就是我可以依次输入多条命令后,统一按Enter键,顺序执行。

    1、多命令执行符

    在多个命令之间加;即可多命令顺序执行。

    命令格式:命令1 ; 命令2

    说明:

    • 多个命令顺序执行,命令之间可以没有任何逻辑联系。
      shell
      [root@localhost ~]# ls ; date ; cd /etc/
      anaconda-ks.cfg	 install.log  install.log.syslog
      2020 03月 29日 星期日 05:08:28 CST
      [root@localhost etc]#
    • 不管前面的命令是否正确执行,后面的命令都会执行。
      shell
      [root@localhost ~]# lswrqwr ; date ; cd /etc/
      -bash: lswrqwr: command not found
      2020 03月 29日 星期日 05:08:28 CST
      [root@localhost etc]#

    2、多命令执行符&&

    &&又叫逻辑与执行符。

    命令格式:命令1 && 命令2

    说明:

    • 当命令1正确执行($?=0),则命令2才会执行。
    • 当命令1执行不正确($?≠0),则命令2不会执行。
    • 命令1和命令2之间可以没有任何逻辑联系。
    • 练习1:命令1正确执行。
      shell
      [root@localhost ~]# ls && echo yes
      anaconda-ks.cfg	 install.log  install.log.syslog
      yes
    • 练习2:命令1不正确执行。
      shell
      [root@localhost ~]# lsfgdf && echo yes
      -bash: lsfgdf: command not found

    说明:($?=0)这里先不说什么意思,后边预定义变量在讲。

    3、多命令执行符||

    ||又叫逻辑或执行符。

    命令格式:命令1 || 命令2

    说明:

    • 当命令1执行不正确($?≠0),则命令2才会执行。
    • 当命令1正确执行($?=0),则命令2不会执行。
    • 命令1和命令2之间可以没有任何逻辑联系。
    • 练习1:命令1正确执行。
      shell
      [root@localhost ~]# ls && echo no
      anaconda-ks.cfg	 install.log  install.log.syslog
    • 练习2:命令1不正确执行。
      shell
      [root@localhost ~]# lsfgdfgg && echo no
      -bash: lsfgdfgg: command not found
      no

    4、&&||联合应用

    &&||两个执行符可以联合应用,来判断命令是否正确执行。

    执行语句:

    shell
    [root@localhost ~]# ls  && echo yes || echo no

    如果ls命令正确执行了,则echo yes命令就会执行,会输出一个yesecho no命令判断前边echo yes命令执行了,则echo no命令则不会执行。

    如果ls命令报错了,则echo yes命令就不会被执行,echo no命令需要判断前边的命令是否执行错误,因为echo yes命令没有执行,被跳过了,所以是判断ls命令是否报错,而ls命令报错了,则执行echo no命令,输出no

    换句话说,ls位置的命令,如果正确执行,则输出yes,如果错误执行,则输出no
    (所以需要注意的是,需要判断命令执行是否出错,而不是命令是否执行。不执行的命令就被挖掉,不予判断。)

    练习:

    shell
    [root@localhost ~]# ls && echo yes || echo no
    anaconda-ks.cfg	 install.log  install.log.syslog
    yes
    
    [root@localhost ~]# lsfgjhg && echo yes || echo no
    -bash: lsfgjhg: command not found
    no

    提出一个问题:

    我能不能把上边命令中的&&||的位置互换?

    答案是不能。

    直接看例子,自己推导:

    shell
    [root@localhost ~]# ls || echo yes && echo no
    anaconda-ks.cfg	 install.log  install.log.syslog
    no
    
    [root@localhost ~]# lsfgjhg || echo yes && echo no
    -bash: lsfgjhg: command not found
    yes
    no

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


    __EOF__

  • 本文作者: 繁华似锦的博客
  • 本文链接: https://www.cnblogs.com/liuyuelinfighting/p/16082830.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    【前端实例代码】使用HTML CSS 和 JavaScript制作一个五星评价的功能!可动态好评+差评+留言功能!
    Leetcode 1761. Minimum Degree of a Connected Trio in a Graph (图好题)
    综合实验 电子记事本的设计与实现——Java
    我的网站每个月给我带来了6W美元收入
    27 微服务配置拉取
    MySQL数据库字段超长问题
    Spring之Bean的自动装配
    【算法】排序——选择排序和交换排序(快速排序)
    循环优先级仲裁~位屏蔽仲裁算法
    Vertica 向 GBase8a 迁移指南之LONG VARBINARY 数据类型
  • 原文地址:https://www.cnblogs.com/liuyuelinfighting/p/16082830.html