Bash的&&,||逻辑运算

Bash的&&,||逻辑运算

bash里的true和false并不是我们通常所认为的0和1。 true和false是shell的内置命令,返回逻辑值。

$?是一个特殊的变量,存放有上一个程序的结束状态。 在shell里面,把0作为程序是否成功结束的标志。

例如:

$ true
$ echo
$?
0
$ false
$ echo
$?
1

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

cmd1 && cmd2

  1. 若 cmd1 运行完毕且正确运行($?=0),则开始运行 cmd2。

  2. 若 cmd1 运行完毕且为错误 ($?≠0),则 cmd2 不运行。

cmd1 || cmd2

  1. 若 cmd1 运行完毕且正确运行($?=0),则 cmd2 不运行。

  2. 若 cmd1 运行完毕且为错误 ($?≠0),则开始运行 cmd2。

其实就是课堂上说的短路运算:
与运算,第一个为0,结果必定为0;第一个为1,第二个必须要参与运算; 或运算,第一个为1,结果必定为1;第一个为0,第二个必须要参与运算

验证回传值:

#!/bin/bash
true&&true; echo $?
true&&false; echo $?
false&&true; echo $?
false&&false; echo $?
true||true; echo $?
true||false; echo $?
false||true; echo $?
false||false; echo $?

[blog@localhost ~]$ sh test.sh

0
1
1
1
0
0
0
1

常用的条件判断式

command1 && command2 || command3

如果command1成功运行,回传$0,运行command2,||得到回传值$0,command3不会运行;
如果command1运行失败,command1 && command2 回传$1,||得到回传值$1,command3运行成功。

原创文章,作者:Net18_木水,如若转载,请注明出处:http://www.178linux.com/14476

(3)
Net18_木水Net18_木水
上一篇 2016-04-11 11:44
下一篇 2016-04-11 11:44

相关推荐

  • httpd 高级应用

    回顾:httpd, lamp, mysql httpd:https, mod_deflate, … httpd+php:三种结合方式     Module:         prefork:libphp5.so  &n…

    Linux干货 2016-11-01
  • LVM 逻辑卷管理器

    1、什么是LVM:PV、PE、VG、LV的意义    LVM:Logical Volume Manager(逻辑卷管理器),可以将多个物理分区整合成看起来像一个磁盘一样,并可随意增加或减少逻辑卷大小 dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块; /dev/mapper/VG_NAME-LV_NAME …

    Linux干货 2016-09-19
  • Linux下LVM

    LVM(Logic Volume Management,逻辑卷管理         由多个块设备(pv,卷)组成一个逻辑卷组(vg),接着在逻辑组上创建逻辑卷(lv),实现在线缩减逻辑卷与逻辑卷组。 实验:     1、VM虚拟机添加硬盘:…

    Linux干货 2016-06-09
  • ☞yum源的生成与配置{ local;cdrom;http;ftp;}

    ☞yum源的生成与配置{ local;cdrom;http;ftp;} 本文是继上一篇文章“CentOS程序安装的3种方式{ 源码包安装 | rpm包安装 | yum安装;}”的补充,上篇文章http://www.178linux.com/38812主要介绍了基于cdrom的yum源制作和配置以及归纳了详细的yum命令。本文继续介绍基于本地file、远程ht…

    Linux干货 2016-08-24
  • RHCE基础实验

    实验:配额实现 1. 启用配额功能 vim /etc/fstab defaults usrquota,grpquota mount -o remount /home 2. 创建配额数据库 quotacheck -cug /home 3. 启用数据库 quotaon /home quotaon -p /home 查看 4. edquota wang setqu…

    Linux干货 2017-05-02
  • 基于Cobbler实现多版本操作系统自动部署

    前言     在生产环境中,当需要批量部署几十甚至上百台服务器时,实现自动化安装操作系统尤为重要,按照传统的光盘引导安装是不可想象的;此前我们通过pxe+kickstart简单实现了自动化安装,但只能实现单一版本安装,当需要部署不同版本或不同引导模式(BIOS、EFI)时,此种方式就不够灵活。而Cobbler正是为了解…

    Linux干货 2015-08-11