条件测试

(一)概念:对特定的条件进行判断,以决定如何执行操作,当条件成立时,测试语句的返回值为0,否则为其他数值,意思就是如果 echo $? 的值是0,那么条件成立。条件测试的分类:文件测试、整数测试、字符串测试、逻辑测试。

  测试方法:

      方法1:test 条件表达式

      方法2:[  条件表达式  ]

(二)测试方法:

1.文件测试

格式1:  [  操作符 文件或目录  ]

格式2:test  操作符 文件或目录

常用的测试操作符

    -d :测试是否为目录( Directory )

    -e :测试目录或文件是否存在(Exist)

    -f :测试是否为文件(File)

    -r :测试当前用户是否可读(read)

    -w:测试当前用户是否可写(write)

    -x :测试当前用户是否可执行(excute)

  1. [root@NEW1 ~]# [ -d /media/cdrom ] #注意这里中括号里需要和内容有空格
  2. [root@NEW1 ~]# echo $? # 如果测试条件不成立,返回数字为非0
  3. 1
  4. [root@NEW1 ~]# [ -d /root ]
  5. [root@NEW1 ~]# echo $?
  6. 0
  7. [root@NEW1 ~]# test -d /root && echo yes
  8. yes
  9. #最后一个语句的意思是如果前面条件测试成立,则输出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)

  1. [root@NEW1 ~]# who
  2. root tty1 2016-11-04 09:59 (:0)
  3. root pts/0 2016-11-04 09:59 (:0.0)
  4. [root@NEW1 ~]# who | wc -l
  5. 2
  6. [root@NEW1 ~]# [ $(who | wc -l) -gt 1 ] && echo ''too many.''
  7. too many.

3、字符串测试

格式1:[ 字符串1 = 字符串2 ]

     [ 字符串1 != 字符串2 ]

格式2:[ -z 字符串 ]

常用的测试操作符

  = : 字符串内容相同

  != : 字符串内容不同

  -z : 字符串内容为空

  1. [root@NEW1 ~]# [ aaa = aaa ] #判断两个字符串是否相等
  2. [root@NEW1 ~]# echo $?
  3. 0
  4. [root@NEW1 ~]# [ aaa != aaa ]
  5. [root@NEW1 ~]# echo $?
  6. 1
  7. [root@NEW1 ~]# [ -z ''] #引号里没有字符串,为空
  8. [root@NEW1 ~]# echo $?
  9. 0
  10. [root@NEW1 ~]# [ -z 'aaa' ] #引号里有字符串,不为空
  11. [root@NEW1 ~]# echo $?
  12. 1
  1. [root@NEW1 ~]# read -p "请输入用户名: " name #提示用户输入字符串,并赋值给name变量
  2. 请输入用户名: #用户直接回车,没有输入
  3. [root@NEW1 ~]# [ -z $name ] #判断name变量是否为空
  4. [root@NEW1 ~]# echo $?
  5. 0                           #name为空,判断成立,显示0
  6. [root@NEW1 ~]# read -p "请输入用户名: " name
  7. 请输入用户名: Mr.Mangood
  8. [root@NEW1 ~]# [ -z $name ]
  9. [root@NEW1 ~]# echo $?
  10. 1
  1. [root@NEW1 ~]# echo $LANG #查看 LANG 语言变量
  2. zh_CN.UTF-8
  3. [root@NEW1 ~]# [ $LANG != "en.US" ] && echo "Not en.US" #如果LANG不为en.US,则输出提示,考察的也是$变量的用法
  4. Not en.US

4、逻辑测试

格式:

  [ 表达式 ]  操作符 [ 表达式2 ] ……

  命令1  操作符  命令2 ……

常用的操作符 ( 注意:-a和-o放在[]里面用,&&和||放在[]外面用 )

    -a  或  &&          逻辑与

    -o  或 ||             逻辑或

      !               逻辑否

  1. [root@NEW1 ~]# [ -d /etc ] && [ -r /etc ] && echo "you can open it"
  2. you can open it
  3. [root@NEW1 ~]# [ -d /etc ] || [ -d /home ] && echo "OK"
  4. OK
  1. [root@NEW1 ~]# [ -d /etc ] || echo "测试或运算符当左边为真时,还是否执行右面"
  2. [root@NEW1 ~]# echo $? #左侧为真,不执行右侧echo部分
  3. 0 #整体为真,因此输出0
  1. [root@NEW1 ~]# [ 2 -eq 2 -a 3 -eq 4 ] && [ -d /etc ]
  2. [root@NEW1 ~]# echo $?
  3. 1
  4.  
  5. [root@NEW1 ~]# [ 2 -eq 2 -o 3 -eq 4 ] && [ -d /etc ]
  6. [root@NEW1 ~]# echo $?
  7. 0

SHELL编程之条件测试的更多相关文章

  1. shell编程:条件测试与比较(六)

    条件测试方法综述 test条件测试的简单语法及测试 范例6-1 测试文件(在test命令中使用-f选项:文件存在且为不同文件则表达式成立) [root@adminset ~]# test -f fil ...

  2. SHELL脚本编程的条件测试

    SHELL脚本编程的条件测试 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.条件测试概述 判断某需求是否满足,需要由测试机制来实现 专用的测试表达式需要由测试命令辅助完成测试过 ...

  3. if语句 条件测试 shell编程之条件语句

    shell 编程之条件语句一.条件测试  ① test命令 测试  ② 文件测试  ③ 整数值比较  ④ 字符串比较  ⑤ 逻辑测试二.if语句的结构  单分支结构  双分支结构  多分支结构三.ca ...

  4. 02 shell编程之条件语句

    Shell编程之条件语句 学习目标: 掌握shell脚本条件测试 掌握if语句编程 目录结构: 条件测试 条件测试概述 l  对特定的条件进行判断,以决定如何执行操作 l  测试的方法 方法1:tes ...

  5. Shell脚本的条件测试与比较

    Shell脚本的条件测试与比较 一.shell脚本的条件测试 通常,在bash的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结构执行不同的操作,有时也会与if等条件语句相结合,来完成测试 ...

  6. Shell编程之条件语句:if、case语句

    Shell编程之条件语句:if.case语句               一.条件测试                1)test命令测试                2)整数值比较         ...

  7. Shell学习之条件测试(四)

    Shell学习之条件测试 目录 逻辑测试 文件测试 数值比较 字符串比较 逻辑测试 格式: [ 表达式 ] 操作符 [ 表达式2 ] …… 命令1 操作符 命令2 …… 常用的操作符 ( 注意:-a和 ...

  8. shell脚本之六:shell脚本的条件测试与比较

    六.shell脚本的条件测试与比较 (一)条件表达式的常见语法 1.条件表达式6种写法(if,while) 语法1:test<测试表达式> 语法2:[ <测试表达式>] #中括 ...

  9. Shell脚本下条件测试(eq.ne.....)(转载)

    转载:http://cxj632840815.blog.51cto.com/3511863/1168709 Shell编程中的条件测试 在Linux编程中经常会用到判断数值的大小,字符串是否为空这样或 ...

随机推荐

  1. 【280】◀▶ ArcPy 常用工具说明

    目录: 一.相关技巧 二.工具说明 一.相关技巧 技巧1:将工具从工具箱拖拽到 Python 窗体中自动会生成相应的函数,于是可以快速定位函数名称! 技巧2:将通过工具箱实现的操作结果拖拽到 Pyth ...

  2. python 生成器的理解和总结

    1. 生成器 利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成.但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数 ...

  3. oracle xe远程访问

    oracle xe其实监听了1521端口 netstat -ano|findstr 只是没请求防火墙权限而已. 手动打开防火墙1521端口 管理员运行下面的命令 本机环境win10 netsh adv ...

  4. zookeeper更进一步(数据模型、watcher及shell命令)

    ZooKeeper数据模型 ZooKeeper 的数据模型,在结构上和标准文件系统的非常相似,拥有一个层次的命名空间,都是采用树形层次结构,ZooKeeper 树中的每个节点被称为—Znode.和文件 ...

  5. java中链表的数据(对象)位置交换

    用LinkedList类的set方法把引用 对象换了就行 ,如 import java.util.LinkedList; public class Tffdsafsdafsad { public st ...

  6. 04-nginx日志管理

    做了几年PHP,老板.经理没说让我管过日志这东西.一般牵涉到日志运维这主要是运维的工作.但是这一章节主要是以拔高性质为主.分析日志的管理方式.PHP程序员不能光靠PHP成为高手,PHP不就if els ...

  7. codeforce465DIV2——D. Fafa and Ancient Alphabet

    概率的计算答案给出的这张图很清楚了,然后因为要求取模,a/b%M=a*b^-1%M=a*inv(b,M)%M; #include <cstdio> #include <cstring ...

  8. php扩展开发1--添加函数

    目标:便携php扩展 要求实现 输出hello word 首先用的是php7.0.3   centos7.1或者centos6.+ 1.1 RPM安装PHP rpm -Uvh https://mirr ...

  9. solr第二天 京东案例

    一.案例 电商网站的搜索 在互联网项目中做搜索都应该使用全文检索. 查询的是索引库,搜索功能跟数据库没有关系.实现分析: 1.先创建索引库 需要把数据库中的数据导入到索引库中. 需要把数据库中每个字段 ...

  10. 2.Hive的几种常见的数据导入方式

    好久没写Hive的那些事了,今天开始写点吧.今天的话题是总结Hive的几种常见的数据导入方式,我总结为四种:(1).从本地文件系统中导入数据到Hive表:(2).从HDFS上导入数据到Hive表:(3 ...