shell的测试语句

一、shell的条件测试语句

        在写shell脚本时,经常遇到的问题就是判断字符串是否相等,可能还要检查文件状态或进
行数字测试,只有这些测试完成才能做下一步动作。

1.1、shell脚本中的条件测试如下:

            1、文件测试

            2、字符串测试

            3、数字测试

            4、复测试

测试语句一般与后面讲的条件语句联合使用

1.2、test命令

         test的命令分为两种格式

         第一种:test condition

         第二种: [ condition ]             注意:使用方括号时,要注意在条件两边加上空格

二、文本测试

 2.1、文本测试功能

          测试文件是什么文件类型

1)按照文件类型
                        -e 文件名 文件是否存在 
                       
-s 文件名 是否为非空     (非空 里面是不是  是;有东西    不是 :没有东西)
                        -b 文件名 块设备文件
                        -c 文件名 字符设备文件
                        -d 文件名 目录文件
                        -f 文件名  普通文件

                        -L 文件名 软链接文件                     注意:要大写
                        -S 文件名 套接字文件                     注意:要大写
                        -p 文件名 管道文件

巧记“bcd-lsp                块字目 普通文件  软链接 软链接 管道”


例1

输出结果

 

 2)两个文件之间的比较


            文件1 -nt 文件2 文件1的修改时间是否比文件2新
            文件1 -ot 文件2 文件1的修改时间是否比文件2旧
            文件1 -ef 文件2 两个文件的inode节点号是否一样,用于判断是否是硬链接


 例2 

输出结果

 三、字符串测试

3.1、字符串测试功能

          字符内容和长度的比较

s1  = s2                   测试两个字符串的内容是否完全一样
s1 != s2                   测试两个字符串内容不一样
-z   s1                      测试s1 字符串的长度为0

-n   s1                      测试s1 字符串的长度不为0


 例1

 输出结果

注意在shell编程里,真,返回为0 ,   假,返回非0 

 四、数字测试

4.1、数字测试功能

           比较数字的大小

a -eq  b           测试a 与b 是否相等
a -ne  b           测试a 与b 是否不相等
a -gt   b           测试a 是否大于b
a -ge  b           测试a 是否大于等于b
a -lt    b           测试a 是否小于b
a -le   b           测试a 是否小于等于b


英文单词:equal :相等                                            shell比较符: -eq

英文单词:not  equal :不等于                                 shell比较符: -ne

英文单词:less :小于                                               shell比较符: -lt

英文单词:less  equal :小于等于                             shell比较符: -le

英文单词:greater  than  :大于                                shell比较符: -gt

英文单词:greater equal :大于等于                         shell比较符: -ge       


例子1:

 输出结果

 五、复合测试

5.1、什么是复合测试语句 

通过前面的上述测试操作,都是单一测试语句。而复合测试,字面意思,一个复合测试语句,可以存在测试文字语句、字测试符串语句、测试数字测试语句。

比如:我想知道某个文件存不存在,存在的话,是目录文件类型? 是   返回true   告知我。

5.2、复合测试语句二种形式

第一种形式:命令执行控制

&&
例1:测试 file存不存在,存在的话     是目录文件类型?      是的话,返回 true  

                 test    -e    $file   &&   test    -d    $file   &&    echo "true" 
&&左边命令执行成功(即返回0)shell才执行&&右边的命令

注意:&&的特点,存在一个不满足情况,即不执行后面的语句,退出返回:非0


||

例2:测试某数字num, 是不是在   小于等于0   或者在   大于等于200的区间。

                    test    $num   -le   0    ||   test   $num  -ge   200  

||左边的命令未执行成功,shell才执行||右边的命令

注意:如果  ||左边语句执行成功(即为真),就不执行 ||  右边的语句命令

例3,上机操作

  提示:当前目录下,有此文件(huai.txt),且为普通文件

 输出结果

分析:输入51存入num1. 不满足条件,返回1,输入260存入num2中,满足条件,返回0 

第二种形式:多重条件判定

-a(and)两边同时成立,才为真
test   -r   file   -a    -x file
file 同时具有 r 与 x 权限时,才为 true.
-o(or)两边存在一个成立,即为真
test    -r   file    -o   -x file
file 具有 r 或 x 权限时,就传回 true
!相反状态
test !   -x   file
当 file 不具有 x权限 时,回传 true

上述例子对比

 输出结果

分析:输入50存入num1. 不满足条件,返回1,输入250存入num2中,满足条件,返回0 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值