Bash的&&,||逻辑运算
bash里的true和false并不是我们通常所认为的0和1。 true和false是shell的内置命令,返回逻辑值。
$?是一个特殊的变量,存放有上一个程序的结束状态。 在shell里面,把0作为程序是否成功结束的标志。
例如:
$ true
$ echo
$?
0
$ false
$ echo
$?
1
有时候,下一条命令依赖前一条命令是否执行成功。
如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。
shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。
cmd1 && cmd2
若 cmd1 运行完毕且正确运行($?=0),则开始运行 cmd2。
若 cmd1 运行完毕且为错误 ($?≠0),则 cmd2 不运行。
cmd1 || cmd2
若 cmd1 运行完毕且正确运行($?=0),则 cmd2 不运行。
若 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