• 『忘了再学』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 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    Go Web 开发之 Revel 框架搭建
    Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
    vue 使用mapbox对当前行政区划进行反选遮罩
    C++ 哈希表的总结与例题
    React 状态管理 - Redux 进阶(下)提升开发体验
    [附源码]JAVA毕业设计九宫格日志网站(系统+LW)
    制作网线——双绞线
    论文笔记:ST2Vec: Spatio-Temporal Trajectory SimilarityLearning in Road Networks
    [Golang] json.Marshal问题总结
    8月23日计算机视觉理论学习笔记——目标检测
  • 原文地址:https://www.cnblogs.com/liuyuelinfighting/p/16082830.html