`
i_am_birdman
  • 浏览: 280645 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

shell 的 && 和 ||

 
阅读更多
Shell && 和 ||

shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时,表示执行失败。

有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。

&&(命令执行控制)

语法格式如下:

    command1 && command2 [&& command3 ...]

1 命令之间使用 && 连接,实现逻辑与的功能。
2 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
3 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

示例 1
malihou@ubuntu:~$ cp ~/Desktop/1.txt ~/1.txt && rm ~/Desktop/1.txt && echo "success"

示例 1 中的命令首先从 ~/Desktop 目录复制 1.txt 文件到 ~ 目录;执行成功后,使用 rm 删除源文件;如果删除成功则输出提示信息。

||(命令执行控制)

语法格式如下:

    command1 || command2 [|| command3 ...]

1 命令之间使用 || 连接,实现逻辑或的功能。
2 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。
3 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。

示例 2
malihou@ubuntu:~$ rm ~/Desktop/1.txt || echo "fail"

在示例 2 中,如果 ~/Desktop 目录下不存在文件 1.txt,将输出提示信息。

示例 3
malihou@ubuntu:~$ rm ~/Desktop/1.txt && echo "success" || echo "fail"

在示例 3 中,如果 ~/Desktop 目录下存在文件 1.txt,将输出 success 提示信息;否则输出 fail 提示信息。

shell 提供了两种方法(() 和 {})实现将几个命令合作一起执行,代替独立执行。这种方式并不能控制命令是否需要执行,仅是将多个单独的命令组合在一起执行,最终命令的返回值将由最后一条命令的返回值来决定。

() (命令组合)

语法格式如下:

    (command1;command2[;command3...])

1 一条命令需要独占一个物理行,如果需要将多条命令放在同一行,命令之间使用命令分隔符(;)分隔。执行的效果等同于多个独立的命令单独执行的效果。
2 () 表示在当前 shell 中将多个命令作为一个整体执行。需要注意的是,使用 () 括起来的命令在执行前面都不会切换当前工作目录,也就是说命令组合都是在当前工作目录下被执行的,尽管命令中有切换目录的命令。
3 命令组合常和命令执行控制结合起来使用。

示例 4
malihou@ubuntu:~$ rm ~/Desktop/1.txt || (cd ~/Desktop/;ls -a;echo "fail")

在示例 4 中,如果目录 ~/Desktop 下不存在文件 1.txt,则执行命令组合。
分享到:
评论

相关推荐

    hbase-shell批量命令执行脚本的方法

    批量执行hbase shell 命令 #!/bin/bash source /etc/profile exec $HBASE_HOME/bin/hbase shell <<EOF truncate 'tracker_total_apk_fact_zyt' major_compact('t_abc') disable 't_abc' drop 't_abc' create...

    Linux Shell编程&常用shell命令

    除此之外,还可以参考《Unix shell脚本编程指南》、《Linux命令行与Shell脚本编程大全》等书籍,以及网上众多的教程和论坛资源,如Stack Overflow、Unix & Linux Stack Exchange等。 总之,掌握Linux Shell编程和...

    Linux中多命令执行’;’和’&&’的区别解释

    ’和’&&’命令,这样shell就可以一次执行多个命令,每个命令之间可用’;’和’&&’隔开。 那么这两者之间有什么区别,下面来一起看看吧。 1、’;’ 用’;’ ———是先执行第一个命令,不管第一个命令是否出错...

    SHELL&MAKE

    ### SHELL&MAKE:深入解析makefile的使用与Shell编程 #### Shell:用户与Linux的交互界面 **Shell**作为用户与Linux系统之间的桥梁,扮演着至关重要的角色。它不仅是一个命令解释器,还提供了多用户环境的支持以及...

    精彩编程与编程技巧-Shell & Wait 的程序怎么写?...

    在编程领域中,Shell 和 Wait 是两个重要的概念,尤其是在处理进程管理和控制方面。通过结合使用 Shell 和 Wait,程序员可以有效地启动外部应用程序,并等待这些应用程序执行完毕。本文将详细介绍如何在 VB(Visual ...

    Linux.Shell_.Scripting.Cookbook | Classic_Shell_Scripting [pdf] 英文

    本文将深入探讨"Linux Shell Scripting Cookbook"这本书中的关键知识点,包括Shell脚本的基础、变量与控制结构、函数和调试,以及在实际工作中的应用。** ### 1. Shell脚本基础 在Linux系统中,Bash Shell是最常用...

    shell shell练习 shell入门

    Shell是Linux和Unix系统中的命令解释器,它提供了一个用户与操作系统内核交互的界面,允许用户通过命令行执行各种操作。本篇文章将深入探讨Shell的基础知识,包括其概念、重要性、基本语法以及如何进行Shell编程练习...

    WebLogic_CVE-2017-3248&&GetShell-CMD验证工具.rar

    Weblogic任意命令执行的检测工具。 WebLogic_CVE-2017-3248文件夹的执行命令: java -jar weblogic_cmd.jar -C whoami -H 10.1.1.104 -P 8083 Weblogic Unserialization GetShll&CMD文件夹的执行命令: ...

    精通 LINUX & UNIX Shell 程序设计.pdf 高清下载

    由于提供的内容中仅包含标题、描述、标签和下载链接的重复信息,并没有具体到Linux和UNIX Shell程序设计的技术细节,因此无法直接从这部分内容中提取出符合要求的知识点。为了满足您的要求,我将基于标题和标签中...

    shell脚本不能执行问题

    shell脚本不能执行问题

    PyPI 官网下载 | shell-util-0.1.1.tar.gz

    这个包可能包含了用于执行shell命令和处理系统操作的实用工具,方便开发者在Python项目中进行系统级别的交互。 【描述】"资源来自pypi官网。资源全名:shell-util-0.1.1.tar.gz" 提示我们这个软件包可以从PyPI官方...

    csapp shell lab 满分原创(北大&cmu;) 仅供参考,请勿抄袭

    在计算机科学的世界里,操作系统是其中至关重要的一环,而Shell作为操作系统与用户交互的桥梁,它的理解和掌握对于每一个学习者来说都至关重要。北京大学和卡内基梅隆大学(CMU)联合开设的“计算机系统基础”...

    LINUX与UNIX Shell

    这份指南分为两个主要部分:Shell基础和文本过滤。 第一部分介绍了Shell基础知识,其中涵盖了文件安全与权限、使用find和xargs命令、后台执行命令、文件名置换、Shell输入输出以及命令执行顺序等概念。 在文件安全...

    LINUX&UNIX SHELL 006

    在Linux和Unix Shell编程中,命令执行顺序是关键,因为它决定了命令如何依次执行以及在什么条件下执行。在本文中,我们将深入探讨如何控制命令的执行流程,包括使用`&&`、`||`、以及`()`和`{}`来组合命令。 6.1 ...

    Linux Shell编程3/3

    Linux Shell编程经典著作: 第一部分SHELL |_文件安全与权限 |_使用find和xargs |_后台执行命令 |_文件名置换 |_shell输入与输出 |_命令执行顺序 第二部分文本过滤 |_正则表达式介绍 ...

    shell编写 shell编写

    Shell编写是Linux或Unix系统中的一种重要技能,它涉及到脚本编程、命令行交互以及系统自动化操作...理解其基本概念、掌握核心语法,并在实践中不断学习和提升,你将能够充分利用Shell的强大功能,为你的工作带来便利。

    shell变量与创建子shell详解

    Shell脚本是一种强大的编程工具,它在Unix和Linux操作系统中广泛应用于自动化和任务调度。在Shell脚本中,创建子Shell是一种常见的操作,它可以提供一个隔离的执行环境,使得在其中执行的命令和脚本不会影响到父...

    shell运算符介绍和例子

    shell运算符介绍和例子 shell运算符是指在shell脚本中使用的运算符,包括算术运算符、比较运算符、逻辑运算符、按位运算符、赋值运算符等。这些运算符可以在shell脚本中使用,实现各种计算、比较和逻辑判断等操作。...

    shell的多线程&当前文件夹下批量插入MySQL

    下面通过一个简单的例子来说明如何创建和使用多线程Shell脚本: 1. 创建FIFO文件:FIFO是一种特殊的文件类型,它可以作为两个进程之间的通信通道。在我们的例子中,它用于同步和控制线程的执行。`mkfifo`命令用于...

    Shell源码(Shell源码)

    Shell是Unix和Linux操作系统中的命令解释器,它提供了一个用户与操作系统内核交互的界面,允许用户通过输入命令来执行系统功能。Shell不仅是一个命令行接口,还是一个强大的编程语言,用户可以编写脚本来自动化一...

Global site tag (gtag.js) - Google Analytics