shell编程基础:逻辑运算
2018-04-15 11:27
363 查看
最近在这里绕了很久啊,现在勉强出来了,分享下自己的一点理解
退出状态码存放在' ? '变量中,可以使用echo $?查看
脚本中可以通过exit
的方式来指定脚本退出时的状态码(注:exit会让脚本立刻退出,此时退出状态码由exit指定。如果未指定exit最终状态码取决于最后一条命令)
条件测试的格式是这样的:
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
条件测试依旧是返回一个值用来表示测试结果,
或:有真必为真
非:真即是假假即是真
逻辑与。当command1正确执行才执行command2,如果command1不正确执行,则不执行command2。在bash中,通过预定义变量“$?”来判断命令是否正确执行,如果"$?"的值为0则表示前一条命令正确执行,其他任意值都表示不正确执行。
为什么,来看一下逻辑与,有假必为假,也就是当command1为假的时候此表达式command1&&command2已经确定结果为假,command2也就不必执行(因为此时无论command2真假表达式都为假)
逻辑或,只有command1为假的时候才会执行command2
依旧是上面的,逻辑或有真必为真,也就是当command1为真的时候此表达式command1 || command2已经为真command2便不必执行(已经不影响结果)
!!!!很重要!!!!
别太关注01,只关心真假
别太关注01,只关心真假
别太关注01,只关心真假
为什么一直没说返回值的问题,因为这是个坑,我在里面差点出不来。先说我的结论:
命令的返回值(退出状态码,条件测试也是一种命令)代表的是程序的退出状态,不是真假
好了,下面的内容特别绕。
一、真假对应1和0
二、命令执行成功为真,失败为假
三、返回值对应0或者非0(条件测试只返回0和1)
四、返回值的0和非0对应的是程序的退出状态,0表示执行成功,非0表示失败
五、逻辑运算中,返回值用来判断真假
如command1 || command2
command1执行→返回值
以上command1已经结束
查询返回值→由返回值得出真假→开始逻辑运算
条件测试中由于返回值只有0和1更容易混淆,只要能接受条件测试是一种命令这种设定,理解起来应该会容易些吧。
command1&&command2||command3
把command3之前的内容看作一个命令就容易理解了
退出状态
一个程序一旦运行必然只有两种结果,要么成功要么失败,成功的结果都一样,失败的原因却是各有不同(咔\~~\~,重来)。无论成功和失败程序都是要退出的,成功的会向系统返回一个成功的信息,失败的也会告诉系统自己执行失败。这个成功或者失败的状态就是退出状态。退出状态码
程序在退出时向系统返回一个数字用来代表自己退出状态,这个数字叫退出状态码。退出状态码存放在' ? '变量中,可以使用echo $?查看
脚本中可以通过exit
的方式来指定脚本退出时的状态码(注:exit会让脚本立刻退出,此时退出状态码由exit指定。如果未指定exit最终状态码取决于最后一条命令)
条件测试
条件测试用来判断某需求是否满足。如两个数字是否相等,两个字符串是否相同……条件测试的格式是这样的:
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
条件测试依旧是返回一个值用来表示测试结果,
逻辑运算
与:有假必为假或:有真必为真
非:真即是假假即是真
command1 && command2
逻辑与。当command1正确执行才执行command2,如果command1不正确执行,则不执行command2。在bash中,通过预定义变量“$?”来判断命令是否正确执行,如果"$?"的值为0则表示前一条命令正确执行,其他任意值都表示不正确执行。
[root@lori ~]$·echo hello && ls hello hello ls: cannot access hello: No such file or directory [root@lori ~]$·ls hello && echo hello ls: cannot access hello: No such file or directory
为什么,来看一下逻辑与,有假必为假,也就是当command1为假的时候此表达式command1&&command2已经确定结果为假,command2也就不必执行(因为此时无论command2真假表达式都为假)
command1 || command2
逻辑或,只有command1为假的时候才会执行command2
[root@lori ~]$·ls hello || echo hello ls: cannot access hello: No such file or directory hello [root@lori ~]$·echo hello || ls hello hello
依旧是上面的,逻辑或有真必为真,也就是当command1为真的时候此表达式command1 || command2已经为真command2便不必执行(已经不影响结果)
!!!!很重要!!!!
别太关注01,只关心真假
别太关注01,只关心真假
别太关注01,只关心真假
为什么一直没说返回值的问题,因为这是个坑,我在里面差点出不来。先说我的结论:
命令的返回值(退出状态码,条件测试也是一种命令)代表的是程序的退出状态,不是真假
好了,下面的内容特别绕。
一、真假对应1和0
二、命令执行成功为真,失败为假
三、返回值对应0或者非0(条件测试只返回0和1)
四、返回值的0和非0对应的是程序的退出状态,0表示执行成功,非0表示失败
五、逻辑运算中,返回值用来判断真假
如command1 || command2
command1执行→返回值
以上command1已经结束
查询返回值→由返回值得出真假→开始逻辑运算
条件测试中由于返回值只有0和1更容易混淆,只要能接受条件测试是一种命令这种设定,理解起来应该会容易些吧。
command1&&command2||command3
把command3之前的内容看作一个命令就容易理解了
相关文章推荐
- linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)
- shell编程之逻辑运算
- Linux shell编程 1 ---- shell脚本编程基础
- linux之shell编程基础
- Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。
- SWT编程基础-Display和Shell
- Shell脚本编程基础
- Shell 编程基础 --语法快速入门
- (转载)3D 图形编程的数学基础(2) 矩阵及其运算
- Shell脚本编程基础 二 构建基本脚本
- Shell基本编程之条件、迭代流程控制、算术运算
- SHELL脚本编程基础
- Shell脚本编程基础 四 更多的结构化命令
- JavaScript 基础(1)ECMAScript(基础语法)——语法、数据类型、基本运算和逻辑运算
- shell算术和逻辑运算
- 1.4编程基础之逻辑表达式与条件分支----学生出错情况及解决方法汇总
- Shell脚本编程01:基础知识
- Shell编程基础
- Shell编程基础之环境变量
- Shell编程基础