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
下一篇 2016-04-11

相关推荐

  • 网络管理

    7层结构。三次握手,四次挥手。

    2017-12-17
  • vim练习题

    #复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符vim /tmp/profile%s@^[[:space:]]+@@g#复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号vim…

    Linux干货 2017-06-03
  • 源码包编译安装MariaDB-10.1.22

    源码包编译安装MariaDB-10.1.22 1、获取源码包        mariadb-10.1.22.tar.gz 2、编译环境及依赖关系     yum groupinstall -y Development Tools yum -y install …

    Linux干货 2017-03-16
  • shell脚本一键分区

    #!/bin/bash #实现硬盘自动分区助手 echo "当前所有分区:" echo `fdisk -l|grep "Disk /dev/[sh]d"|cut -d: -f1|awk '{print $2 &q…

    Linux干货 2016-07-26
  • Linux的文件查找之find的使用

    文件查找   本章节内容:   使用locate命令   使用find命令   使用Gnome搜索工具    一、文件的查找(find和locate的对比): 文件查找:是在文件系统上查找符合条件的文件。 locate find 查找时效性 非实时查找 实时查找 文件索引数据库 需要依赖查询系统上预…

    Linux干货 2016-08-15