SHELL编程之条件测试
条件测试
(一)概念:对特定的条件进行判断,以决定如何执行操作,当条件成立时,测试语句的返回值为0,否则为其他数值,意思就是如果 echo $? 的值是0,那么条件成立。条件测试的分类:文件测试、整数测试、字符串测试、逻辑测试。
测试方法:
方法1:test 条件表达式
方法2:[ 条件表达式 ]
(二)测试方法:
1.文件测试
格式1: [ 操作符 文件或目录 ]
格式2:test 操作符 文件或目录
常用的测试操作符
-d :测试是否为目录( Directory )
-e :测试目录或文件是否存在(Exist)
-f :测试是否为文件(File)
-r :测试当前用户是否可读(read)
-w:测试当前用户是否可写(write)
-x :测试当前用户是否可执行(excute)
[root@NEW1 ~]# [ -d /media/cdrom ] #注意这里中括号里需要和内容有空格
[root@NEW1 ~]# echo $? # 如果测试条件不成立,返回数字为非0
1
[root@NEW1 ~]# [ -d /root ]
[root@NEW1 ~]# echo $?
0
[root@NEW1 ~]# test -d /root && echo “yes”
“yes”
#最后一个语句的意思是如果前面条件测试成立,则输出yes,应用原理:&&是一个''逻辑与''运算符,前面为真,后面为真,整个语句才为真,当左面为真,就会继续触发逻辑与,继续判断右面才知道整个语句是否为真,所以才能输出 yes。
2、整数测试
格式1:[ 整数1 操作符 整数2 ]
格式2: test 整数1 操作符 整数2
常用的测试操作符
-eq : 等于 (Equal)
-ne : 不等于 (Not Equal)
-gt : 大于(Greater Than)
-lt : 小于 (Lesser Than)
-le : 小于或等于(Lesser or Equal)
-ge : 大于或等于(Greater or Equal)
[root@NEW1 ~]# who
root tty1 2016-11-04 09:59 (:0)
root pts/0 2016-11-04 09:59 (:0.0)
[root@NEW1 ~]# who | wc -l
2
[root@NEW1 ~]# [ $(who | wc -l) -gt 1 ] && echo ''too many.''
too many.
3、字符串测试
格式1:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2:[ -z 字符串 ]
常用的测试操作符
= : 字符串内容相同
!= : 字符串内容不同
-z : 字符串内容为空
[root@NEW1 ~]# [ aaa = aaa ] #判断两个字符串是否相等
[root@NEW1 ~]# echo $?
0
[root@NEW1 ~]# [ aaa != aaa ]
[root@NEW1 ~]# echo $?
1
[root@NEW1 ~]# [ -z ''] #引号里没有字符串,为空
[root@NEW1 ~]# echo $?
0
[root@NEW1 ~]# [ -z 'aaa' ] #引号里有字符串,不为空
[root@NEW1 ~]# echo $?
1
[root@NEW1 ~]# read -p "请输入用户名: " name #提示用户输入字符串,并赋值给name变量
请输入用户名: #用户直接回车,没有输入
[root@NEW1 ~]# [ -z $name ] #判断name变量是否为空
[root@NEW1 ~]# echo $?
0 #name为空,判断成立,显示0
[root@NEW1 ~]# read -p "请输入用户名: " name
请输入用户名: Mr.Mangood
[root@NEW1 ~]# [ -z $name ]
[root@NEW1 ~]# echo $?
1
[root@NEW1 ~]# echo $LANG #查看 LANG 语言变量
zh_CN.UTF-8
[root@NEW1 ~]# [ $LANG != "en.US" ] && echo "Not en.US" #如果LANG不为en.US,则输出提示,考察的也是$变量的用法
Not en.US
4、逻辑测试
格式:
[ 表达式 ] 操作符 [ 表达式2 ] ……
命令1 操作符 命令2 ……
常用的操作符 ( 注意:-a和-o放在[]里面用,&&和||放在[]外面用 )
-a 或 && 逻辑与
-o 或 || 逻辑或
! 逻辑否
[root@NEW1 ~]# [ -d /etc ] && [ -r /etc ] && echo "you can open it"
you can open it
[root@NEW1 ~]# [ -d /etc ] || [ -d /home ] && echo "OK"
OK
[root@NEW1 ~]# [ -d /etc ] || echo "测试或运算符当左边为真时,还是否执行右面"
[root@NEW1 ~]# echo $? #左侧为真,不执行右侧echo部分
0 #整体为真,因此输出0
[root@NEW1 ~]# [ 2 -eq 2 -a 3 -eq 4 ] && [ -d /etc ]
[root@NEW1 ~]# echo $?
1 [root@NEW1 ~]# [ 2 -eq 2 -o 3 -eq 4 ] && [ -d /etc ]
[root@NEW1 ~]# echo $?
0
SHELL编程之条件测试的更多相关文章
- shell编程:条件测试与比较(六)
条件测试方法综述 test条件测试的简单语法及测试 范例6-1 测试文件(在test命令中使用-f选项:文件存在且为不同文件则表达式成立) [root@adminset ~]# test -f fil ...
- SHELL脚本编程的条件测试
SHELL脚本编程的条件测试 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.条件测试概述 判断某需求是否满足,需要由测试机制来实现 专用的测试表达式需要由测试命令辅助完成测试过 ...
- if语句 条件测试 shell编程之条件语句
shell 编程之条件语句一.条件测试 ① test命令 测试 ② 文件测试 ③ 整数值比较 ④ 字符串比较 ⑤ 逻辑测试二.if语句的结构 单分支结构 双分支结构 多分支结构三.ca ...
- 02 shell编程之条件语句
Shell编程之条件语句 学习目标: 掌握shell脚本条件测试 掌握if语句编程 目录结构: 条件测试 条件测试概述 l 对特定的条件进行判断,以决定如何执行操作 l 测试的方法 方法1:tes ...
- Shell脚本的条件测试与比较
Shell脚本的条件测试与比较 一.shell脚本的条件测试 通常,在bash的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结构执行不同的操作,有时也会与if等条件语句相结合,来完成测试 ...
- Shell编程之条件语句:if、case语句
Shell编程之条件语句:if.case语句 一.条件测试 1)test命令测试 2)整数值比较 ...
- Shell学习之条件测试(四)
Shell学习之条件测试 目录 逻辑测试 文件测试 数值比较 字符串比较 逻辑测试 格式: [ 表达式 ] 操作符 [ 表达式2 ] …… 命令1 操作符 命令2 …… 常用的操作符 ( 注意:-a和 ...
- shell脚本之六:shell脚本的条件测试与比较
六.shell脚本的条件测试与比较 (一)条件表达式的常见语法 1.条件表达式6种写法(if,while) 语法1:test<测试表达式> 语法2:[ <测试表达式>] #中括 ...
- Shell脚本下条件测试(eq.ne.....)(转载)
转载:http://cxj632840815.blog.51cto.com/3511863/1168709 Shell编程中的条件测试 在Linux编程中经常会用到判断数值的大小,字符串是否为空这样或 ...
随机推荐
- 「小程序JAVA实战」 小程序的事件(11)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-11/ 我们以前在web开发的时候,web页面也有一些相关的事件,当然小程序要接触屏幕要进行一些点击 ...
- BeX5 常见问题解决办法
1.获取当前Activity的名称 Activity activity = ProcessUtils.getActivityInProcessContext(); String activityNam ...
- 强大的HTML5开发工具推荐
HTML5被看做是Web开发者创建流行Web应用的利器,增加了对视频和Canvas 2D的支持.HTML5的诞生还让人们重新审视浏览器专用多媒体插件的未来,如Adobe的Flash和微软的Silver ...
- Spring整合web项目原理
- Linux的基本指令--其他命令
一 . 终端翻页: shift-pageup shift-pagedown 二 . 看手册:man man man 2 read 查看read系统函数的man page(在第二个section中,表示 ...
- node.js中模块报错【window is not defined】的解决方法
(function(window) { /* Keep source code the same */ // })(typeof window == "undefined" ? g ...
- Content 控件
转自:http://www.cnblogs.com/superfang/archive/2008/06/29/1232158.html 创建一个服务器控件,该控件包含呈现到母版页中的 ContentP ...
- Docker学习笔记_Dockerfile基本知识
Dockerfile由一行行命令语句组成,并支持以#开头的注释行. 1.编写一个Dockerfile文件 创建一个空的Docker工作目录,进入该目录,使用sudo vim Dockerfile指令新 ...
- 932F Escape Through Leaf
传送门 题目大意 https://www.luogu.org/problemnew/show/CF932F 分析 我们可以从叶子向根每次插入b和ans 所以我们不难发现就是相当于插入线段 于是李超树+ ...
- redis过期key的清理策略
一,有三种不同的删除策略(1),立即清理.在设置键的过期时间时,创建一个回调事件,当过期时间达到时,由时间处理器自动执行键的删除操作. (2),惰性清理.键过期了就过期了,不管.当读/写一个已经过期的 ...