zoukankan      html  css  js  c++  java
  • Linux Shell基础 多个命令中的分号(;)、与(&&) 、 或(||)

    概述

    在 Bash 中,如果需要让多条命令按顺序执行,则有这样方法,如表 1 所示。

    多命令执行符格 式作 用
    命令1 ; 命令2 多条命令顺序执行,命令之间没有任何逻辑关系
    && 命令1 && 命令2 如果命令1正确执行($?=0),则命令2才会执行
    如果命令1执行不正确($?≠0),则命令2不会执行
    II 命令1 || 命令2 如果命令1执行不正确($?≠0),则命令2才会执行
    如果命令1正确执行($?=0),则命令2不会执行

    ";"多命令顺序执行

    如果使用分号";"连接多条命令,那么这些命令会一次执行,但是各命令之间没有任何逻辑关系,不论哪条命令报错了,后面的命令仍会依次执行。例如:

    cd /user命令出错不影响其他命令的执行,所以当我们需要一次执行多条命令,而这些命令之间又没有可逻辑关系时,就可以使用";"来连接多条命令。

    [root@localhost ~]# ls ; date; cd /user; pwd
    anaconda-ks.cfg
    Tue Nov 20 20:59:42 CST 2018
    -bash: cd: /user: No such file or directory
    /root

    "&&"逻辑与

    如果使用"&&"连接多条命令,那么只有第一条命令正确执行了,"&&"连接的第二条命令才会执行。在Bash中通过预定义变量 $?来判断上一条命令是是否执行成功,如果 $? 返回值是 0,则证明上一条命令正确执行;如果 $? 返回值是非 0,则证明上一条命令执行错误。

    例如: 复制/root/test到/tmp/test,如果命令成功则删除原文件,并打印"yes"。在执行过程中,因为没有test这个文件或目录,所以cp命令无法获取"/root/test"的文件状态(stat),,所以第一条命令执行不正确,第二和第三条命令也都不执行了。

    [root@localhost ~]# cp /root/test /tmp/test && rm -rf/ root/test && echo yes

    通常在安装源码包时,需要执行"./configure"、"make"和"make install"命令,但是在安装软件时又需要等待较长时间,则可以利用"&&"同时执行这三条命令,例如

    [root@localhost ~]# cd httpd-2.2.9
    [root@localhost httpd-2.2.9]# ./configure --prefix=/usr/ local/apache2 && make && make install

    "||"逻辑或

    如果使用"||"连接多条命令,则只有前一条命令执行错误,后一条命令才能执行。

    例如:因为无法访问/root/test:没有那个文件或目录,所以用ls命令查看时报错了。因为第一条命令执行错误,所以第二条命令才正确执行

    [root@localhost ~]#ls /root/test || mkdir/root/tdir

    在脚本中如果我们想要判断某条命令是否正确执行,就可以使用下面命令:

    因为/root/test文件不存在,第一条命令报错,则第二条命令不能正确执行,因为第二条命令执行错误,所以第三条命令正确执行,打印"no"

    [root@localhost ~]#ls /root/test && echo "yes"||echo "no"

     

  • 相关阅读:
    常用工具
    域名解析过程
    生成免费SSL通配证书
    Windows10环境下loadrunner11 安装
    Jenkins邮件扩展(Email Extension插件 Windows环境)
    Jenkins配置HTML报告(Windows环境)
    jenkins 构建一个maven项目
    jmeter+maven 的简单使用 记录(Windows环境)
    Jenkins 邮件发送设置(jenkins自带邮件设置)
    jmeter建立JDBC连接池时遇到“A Test is currently running,stop or shutdown test to execute this command”
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/9991635.html
Copyright © 2011-2022 走看看