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 :: CST
-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.
[root@localhost httpd-2.2.]# ./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"
Linux Shell基础 多个命令中的分号(;)、与(&&) 、 或(||)的更多相关文章
- Linux Shell基础 Bash常见命令 history、alias命令以及常用快捷键
概述 shell中常见命令history 历史纪录命令:history 命令格式如下: [root@localhost ~]# history [选项] [历史命令保存文件] -c:清空历史命令: ...
- Linux Shell基础 Bash常见命令 echo命令
概述 shell中常见的命令echo. 输出命令:echo echo命令的输出内容如果没有特殊含义,则将原内容输出到屏幕:如果输出内容有特殊含义,则输出打印其含义. 命令格式如下: [root@loc ...
- linux shell for循环使用命令中读取到的值实例
#!/bin/bash file="states" for state in `cat $file` do echo "Visit beautiful $state&qu ...
- Linux Shell基础(下)
Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
- linux shell 基础 使用日志与心得
linux shell 基础 使用日志与心得 1.#!/bin/bash 第一行就出现#!/bin/bash是指此脚本使用/bin/bash来解释执行.其中,#!是一个特殊的表示符,其后,跟着解释此脚 ...
- linux shell 学习笔记--内部命令学习
.基本命令 新手必须要掌握的初级命令 ls 基本的列出所有文件的命令.但是往往就是因为这个命令太简单,所以我们总是低估它.比如 ,用 -R 选项,这是递归选项,ls 将会以目录树的形式列出所有文件, ...
- Linux笔记(shell基础,历史命令,命令补全/别名,通配符,输出重定向)
一.shell 基础 shell是个命令解释器,提供用户和机器之间的交互 每个用户都可以拥有自己特定的shell centos7默认Shell为bash(Bourne Agin shell) 除了ba ...
- Linux Shell 基础知识(一)
1. 本文知识结构 2. shell 基础知识 2.1 shell 简单介绍 GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + ...
随机推荐
- TP3.2 引入微信类
首先建立一个入口IndexController.php文件 <?php namespace Home\Controller; use Think\Controller; use Com\Wech ...
- Eclipse 创建 XML 文件
Eclipse 创建 XML 文件 打开新建 XML 文件向导 你可以使用新建 XML 文件向导来创建 XML 文件.打开向导的方式有: 点击 File 菜单并选择 New > Other 点击 ...
- Laravel 5.1 Blade模板引擎
为什么要使用blade 它是干什么用的? blade模板引擎使我们写HTML页面的地方,使用它是因为它能给我们提供很多的遍历,减少代码的重复率 提高开发效率.我们写blade的路径是 resource ...
- shell脚本中echo显示内容带颜色显示
格式如下 : echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 注: 1.字背景颜色和文 ...
- AdnroidUtils-常用工具类(showDiaLog/HTTP)
1. HttpUtils 该工具类应用于Android客户端+Web服务器 /** * */ package com.nubb.auction.client.util; import java.uti ...
- CodeIgniter框架——数据库类(配置+快速入门)
CodeIgniter用户指南——数据库类 数据库配置 入门:用法举例 连接数据库 查询 生成查询结果 查询辅助函数 Active Record 类 事务 表格元数据 字段元数据 自定义函数调用 查询 ...
- [Spring Data MongoDB]学习笔记--MongoTemplate插入修改操作
插入操作: 直接给个例子 import static org.springframework.data.mongodb.core.query.Criteria.where; import static ...
- 《从零开始学Swift》学习笔记(Day 6)——哎呀常量和变量都该什么时候用啊?
原创文章,欢迎转载.转载请注明:关东升的博客 使用var还是let? 在我们开发过程中啊什么时候定义关键字为var,还是定义为let呢? 其实啊都能满足我们的需求,那我们到底应该如何选择? 例如:可以 ...
- 从ELK到EFK
https://my.oschina.net/itshare/blog/775466 http://blog.51cto.com/467754239/1700828 日志系统 日志就是程序产生的,遵循 ...
- Machine Learning - week 2 - 编程练习
3. % J = COMPUTECOST(X, y, theta) computes the cost of using theta as the % parameter for linear r ...