shell编程之条件测试

条件测试

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

  测试方法:

      方法1:test 条件表达式

      方法2:[  条件表达式  ]

(二)测试方法:

1.文件测试

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

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

常用的测试操作符

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

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

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

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

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

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

1 [[email protected] ~]# [ -d /media/cdrom ]    #注意这里中括号里需要和内容有空格
2 [[email protected] ~]# echo $?                # 如果测试条件不成立,返回数字为非0
3 1
4 [[email protected] ~]# [ -d /root ]
5 [[email protected] ~]# echo $?
6 0
7 [[email protected] ~]# 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 [[email protected] ~]# who
2 root tty1 2016-11-04 09:59 (:0)
3 root pts/0 2016-11-04 09:59 (:0.0)
4 [[email protected] ~]# who | wc -l
5 2
6 [[email protected] ~]# [ $(who | wc -l) -gt 1 ] && echo ‘‘too many.‘‘
7 too many.

3、字符串测试

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

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

格式2:[ -z 字符串 ]

常用的测试操作符

  = : 字符串内容相同

  != : 字符串内容不同

  -z : 字符串内容为空

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

4、逻辑测试

格式:

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

  命令1  操作符  命令2 ……

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

    -a  或  &&          逻辑与

    -o  或 ||             逻辑或

      !               逻辑否

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

shell编程之条件测试的相关文章

Shell编程基础--条件测试

test命令: 用途:测试特定的表达式是否成立,当条件成立时,命令执行后返回值为0,否则为其他值 格式:test 条件表达式 [ 条件表达式 ] 注意,表达式左右有空格,方括号是必须有 常见的测试类型: 测试文件状态 字符串比较 整数值比较 逻辑测试 测试文件状态: 格式:[ 操作符 文件或目录 ] 操作符: -d测试是否为目录 -e测试目录或文件是否存在 -f测试是否为文件 -r测试当前用户是否有权限读取 -w测试当前用户是否有权限写入 -x测试当前用户是否有权限执行该文件 -L测试是否为符号

《跟老男孩学Linux运维之shell编程实战》-第五章 shell脚本的条件测试

本文的知识点是关于shell脚本的条件测试的相关内容. 通常在shell脚本中我们需要做各式各样的条件判断,比如,测试一个文件是否存在.是否为文件或目录.是否 具有执行权限等等,所以在shell脚本中,条件判断还是至关重要的.接下来我们进入正题:shell脚本的条件测试. 1.在bash编程中,条件测试常用的语法形式如下表: 提示: 语法1中的test命令和语法2中的[]是等价的.语法3中的[[]]双中括号为扩展的test命令. 语法4中的(())常用于计算. 在双中括号[[]]中可以使用通配符

Shell编程 之 条件表达式

1 #!/bin/bash -   2 #===============================================================================  3 #  4 #          FILE: condition_expression_test.sh  5 #   6 #         USAGE: ./condition_expression_test.sh   7 #   8 #   DESCRIPTION:   9 #  10 #

Shell学习之条件测试(四)

Shell学习之条件测试 目录 逻辑测试 文件测试 数值比较 字符串比较 逻辑测试 格式: [ 表达式 ] 操作符 [ 表达式2 ] -- 命令1 操作符 命令2 -- 常用的操作符 ( 注意:-a和-o放在[]里面用,&&和||放在[]外面用 ) -a 或 && 逻辑与 -o 或 || 逻辑或 ! 逻辑否 文件测试 文件测试 格式1: [ 操作符 文件或目录 ] 格式2:test 操作符 文件或目录 常用的测试操作符 -d :测试是否为目录( Directory ) -e

shell学习之条件测试(参考shell脚本编程诀窍)

1关于test测试,查看man文档知 表达式的判断 ( EXPRESSION )                    #EXPRESSION is true ! EXPRESSION                      #EXPRESSION is false EXPRESSION1 -a EXPRESSION2        #both are true,-o means or 字符串是否为空,相等 -n STRING  #the length of STRING is nonzero

linux基础之shell编程(2)-条件判断,算数运算,测试

bash中如果实现条件判断? 条件测试类型 整数测试 字符测试 文件测试 条件测试的表达式 有三种 [ expression ] --方括号与表达式之间一定要有一个空格 [[ expression ]] test expression 整数测试 -eq: 测试两个整数是否相等 例:$A -eq $B -ne: 测试两个整数是否不等 不等为真,相等为假 -gt: 测试一个数是否大于另一个数:大于,为真:否则,为假: -lt: 测试一个数是否小于另一个数:小于,为真:否则,为假: -ge: 大于或等

Shell编程之条件判断与流程控制

一.条件判断式语句 1-1.概述 用来判断是与否,客观的而非主观判断,用于进行基本的管理 1-2.按文件类型判断 补充: && 命令1&&命令2 逻辑与(没有数据传递) 当命令1正确执行,则命令2才会执行 当命令1执行不正确,则命令2不会执行 || 命令1||命令2 逻辑或(没有数据传递) 当命令1执行不正确时,命令2才会执行 当命令1正确执行时,命令2不会执行 按文件类型判断 记住蓝色部分 两种判断格式: test –e /root/install.log [-e /ro

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

转载:http://cxj632840815.blog.51cto.com/3511863/1168709 Shell编程中的条件测试 在Linux编程中经常会用到判断数值的大小,字符串是否为空这样或那样的条件测试语句 今天说说Linux中的常用的条件测试语句 1,判断两个数字的大小 -eq 相等或等于 -ne 不想等或不等于 -gt 第一个数大于第二个数 -lt 第一个数小于第二个数 -le 第一个数小于等于第二个数 -ge 第一个数大于等于第二个数 -z 空串 = 两个字符相等 != 两个字

shell基础 变量 条件测试 判断结构

Top NSD ENGINEER DAY02 案例1:Shell脚本的编写及测试 案例2:重定向输出的应用 案例3:使用特殊变量 案例4:编写一个判断脚本 案例5:编写一个批量添加用户脚本 1 案例1:Shell脚本的编写及测试 1.1 问题 本例要求两个简单的Shell脚本程序,任务目标如下: 编写一个面世问候 /root/helloworld.sh 脚本,执行后显示出一段话“Hello World!!” 编写一个能输出系统信息的 /root/sysinfo 脚本,执行后依次输出当前红帽系统的