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 命令 #!/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...
除此之外,还可以参考《Unix shell脚本编程指南》、《Linux命令行与Shell脚本编程大全》等书籍,以及网上众多的教程和论坛资源,如Stack Overflow、Unix & Linux Stack Exchange等。 总之,掌握Linux Shell编程和...
’和’&&’命令,这样shell就可以一次执行多个命令,每个命令之间可用’;’和’&&’隔开。 那么这两者之间有什么区别,下面来一起看看吧。 1、’;’ 用’;’ ———是先执行第一个命令,不管第一个命令是否出错...
### SHELL&MAKE:深入解析makefile的使用与Shell编程 #### Shell:用户与Linux的交互界面 **Shell**作为用户与Linux系统之间的桥梁,扮演着至关重要的角色。它不仅是一个命令解释器,还提供了多用户环境的支持以及...
在编程领域中,Shell 和 Wait 是两个重要的概念,尤其是在处理进程管理和控制方面。通过结合使用 Shell 和 Wait,程序员可以有效地启动外部应用程序,并等待这些应用程序执行完毕。本文将详细介绍如何在 VB(Visual ...
本文将深入探讨"Linux Shell Scripting Cookbook"这本书中的关键知识点,包括Shell脚本的基础、变量与控制结构、函数和调试,以及在实际工作中的应用。** ### 1. Shell脚本基础 在Linux系统中,Bash Shell是最常用...
Shell是Linux和Unix系统中的命令解释器,它提供了一个用户与操作系统内核交互的界面,允许用户通过命令行执行各种操作。本篇文章将深入探讨Shell的基础知识,包括其概念、重要性、基本语法以及如何进行Shell编程练习...
由于提供的内容中仅包含标题、描述、标签和下载链接的重复信息,并没有具体到Linux和UNIX Shell程序设计的技术细节,因此无法直接从这部分内容中提取出符合要求的知识点。为了满足您的要求,我将基于标题和标签中...
shell脚本不能执行问题
在计算机科学的世界里,操作系统是其中至关重要的一环,而Shell作为操作系统与用户交互的桥梁,它的理解和掌握对于每一个学习者来说都至关重要。北京大学和卡内基梅隆大学(CMU)联合开设的“计算机系统基础”...
这个包可能包含了用于执行shell命令和处理系统操作的实用工具,方便开发者在Python项目中进行系统级别的交互。 【描述】"资源来自pypi官网。资源全名:shell-util-0.1.1.tar.gz" 提示我们这个软件包可以从PyPI官方...
这份指南分为两个主要部分:Shell基础和文本过滤。 第一部分介绍了Shell基础知识,其中涵盖了文件安全与权限、使用find和xargs命令、后台执行命令、文件名置换、Shell输入输出以及命令执行顺序等概念。 在文件安全...
在Linux和Unix Shell编程中,命令执行顺序是关键,因为它决定了命令如何依次执行以及在什么条件下执行。在本文中,我们将深入探讨如何控制命令的执行流程,包括使用`&&`、`||`、以及`()`和`{}`来组合命令。 6.1 ...
Linux Shell编程经典著作: 第一部分SHELL |_文件安全与权限 |_使用find和xargs |_后台执行命令 |_文件名置换 |_shell输入与输出 |_命令执行顺序 第二部分文本过滤 |_正则表达式介绍 ...
CloudShell是由Quali公司开发的一款云和数据中心自动化管理平台,它提供了一个沙箱环境,允许开发者和管理员快速部署和测试复杂的IT服务和应用。`cloudshell-app-helper`库可能包含以下功能: 1. **API交互**:此库...
Shell编写是Linux或Unix系统中的一种重要技能,它涉及到脚本编程、命令行交互以及系统自动化操作...理解其基本概念、掌握核心语法,并在实践中不断学习和提升,你将能够充分利用Shell的强大功能,为你的工作带来便利。
Shell脚本是一种强大的编程工具,它在Unix和Linux操作系统中广泛应用于自动化和任务调度。在Shell脚本中,创建子Shell是一种常见的操作,它可以提供一个隔离的执行环境,使得在其中执行的命令和脚本不会影响到父...
shell运算符介绍和例子 shell运算符是指在shell脚本中使用的运算符,包括算术运算符、比较运算符、逻辑运算符、按位运算符、赋值运算符等。这些运算符可以在shell脚本中使用,实现各种计算、比较和逻辑判断等操作。...
下面通过一个简单的例子来说明如何创建和使用多线程Shell脚本: 1. 创建FIFO文件:FIFO是一种特殊的文件类型,它可以作为两个进程之间的通信通道。在我们的例子中,它用于同步和控制线程的执行。`mkfifo`命令用于...
Shell是Unix和Linux操作系统中的命令解释器,它提供了一个用户与操作系统内核交互的界面,允许用户通过输入命令来执行系统功能。Shell不仅是一个命令行接口,还是一个强大的编程语言,用户可以编写脚本来自动化一...