shell的测试语句

news/2024/4/19 10:57:07/文章来源:https://blog.csdn.net/weixin_47783699/article/details/128991942

一、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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_73024.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(带解析)(三)

声明:此系列答案配套《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误…

java JMM 内存屏障

内存屏障的目的 每个CPU都会有自己的缓存(有的甚至L1,L2,L3),缓存的目的就是为了提高性能,避免每次都要向内存取。但是这样的弊端也很明显:不能实时的和内存发生信息交换,分在不同CPU执行的不同线程对同一…

基于SPI的增强式插件框架设计

很久之前,为了诊断线上的问题,就想要是能有工具可以在线上出问题的时候,放个诊断包进去马上生效,就能看到线上问题的所在,那该是多么舒服的事情。后来慢慢的切换到 java 领域后,这种理想也变成了现实&#…

【selenium 自动化测试】如何搭建自动化测试环境,搭建环境过程应该注意的问题

最近也有很多人私下问我,selenium学习难吗,基础入门的学习内容很多是3以前的版本资料,对于有基础的人来说,3到4的差别虽然有,但是不足以影响自己,但是对于没有学过的人来说,通过资料再到自己写的…

2023年PMP考试应该注意些什么?

首先注意(报考条件) 2023年PMP考试报名流程: 一、PMP英文报名: 英文报名时间无限制,随时可以报名,但有一年的有效期,所以大家尽量提前报名,在英文报名有效期内进行中文报名。 英…

深度卷积对抗神经网络 进阶 第三部分 GANs Unpaired Translation with Cycle GAN 模型

非配对的图像转换应用 Unpaired Image-to-Image Translation Unpaired image-to-image translation 主要用于学习两组图像之间的对应关系,检查和寻找两堆数据中的共同内容(content)以及每堆独有的特点(style)。而这个…

【Database-03】从 MySQL 迁移到 达梦数据库(DM 8)

1、环境 源数据库 MySQL 8.30 目标数据库 DM 8 操作系统 Centos 9 Steam 迁移工具 DM 数据迁移工具 (DM DTS) 2、开始迁移 2.1、打开DM数据迁移工具 在新建工程对话框中填写工程名和工程描述信息,点击【确定】按钮,成功添加了一个工程。 2.2、新建迁…

3年经验,3轮技术面+1轮HR面,拿下字节30k*16薪offer,这些自动化测试面试题值得大家借鉴

面试一般分为技术面和hr面,形式的话很少有群面,少部分企业可能会有一个交叉面,不过总的来说,技术面基本就是考察你的专业技术水平的,hr面的话主要是看这个人的综合素质以及家庭情况符不符合公司要求,一般来…

2023年,IT互联网还有发展前景吗?

不得不说,互联网在整个社会经济发展中扮演着不可或缺的角色;不仅自身的技术具有前沿性,也推动着其他行业进入数字化经济时代,让我们的工作生活变得更加便捷。 在“互联网”时代,每个服务行业都会利用大数据&#xff0…

SpringBoot入门(二)

这里写目录标题一、SpringBoot整合Junit1.1 搭建SpringBoot工程1.2 引入starter-test起步依赖1.3 编写类1.4 测试二、SpringBoot整合mybatis2.1 搭建SpringBoot工程2.2 引入mybatis起步依赖,添加驱动2.3 编写DataSource和MyBatis相关配置2.4 定义表和实体类2.5 编写…

Bootstrap入门到精通

文章目录前言一、Bootstrap是什么?二、Bootstrap安装方式一:将压缩包下载到本地引入使用方式二:使用Bootstrap官方cdn二.Bootstrap容器下面是屏幕宽度在不同大小时不同容器的显示状态三.Bootstrap栅格系统bootstrap网格系统有以下六个类网格系…

linux shell 入门学习笔记7 父子shell面试题

1. 不同的执行方式,不同的shell环境 每次调用bash/sh解释器执行脚本都会开启一个子shell,因此不保留当前shell变量,通过pstree命令检查进程树调用source是当前环境加载脚本,因此保留变量 例子: xiao123xiao123:~/Dow…

直播间的2个小感悟

我是卢松松,点点上面的头像,欢迎关注我哦! 在线人数固定 最近直播间出现了很多新面孔,有的是偶然刷到的,有的是关注互联网找到的。而直播间的人数一直没什么变化,卢松松在抖音直播较少,主播间…

开学第一周,超30所高校系主任选择与百度飞桨联办校赛

经历了一场特殊而漫长的假期,各地校园又恢复了往日的热闹,重新焕发出勃勃生机,师生们在一声声久别重逢的暖心问候中,迎来了2023年春季学期。 以赛促学蔚然成风 开学季是校内竞赛策划及启动的最佳时机之一,越来越多的老…

JVM17GUI工具

3. JVM 监控及诊断工具-GUI 篇 3.1. 工具概述 命令行工具或组合能帮您获取目标 Java 应用性能相关的基础信息,但它们存在下列局限: 1.无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间等&#xff0…

TEMU联盟计划用意何在?做推广达人真的能收入满满吗?

据东哥近期了解,Temu在北美市场表现十分火爆,甚至冲上了AppStore下载榜第一名。Temu在美国市场上采用了类似PDD的病毒式传播策略,以实惠的产品和折扣吸引消费者并动员普通人大量传播链接和App下载,所以有了TEMU联盟计划&#xff0…

ArcGIS导出AI或EPS格式的地图图片并在Adobe Illustrator中继续编辑

本文介绍在ArcGIS下属的ArcMap软件中,将绘制好的地图导出为.ai或者.eps格式文件,并在Adobe Illustrator软件中进一步编辑地图,并最终导出为图片格式的结果文件的方法。 在ArcMap软件中绘制各类地图可以说非常方便,绘制得到的地图也…

深圳/东莞/惠州师资比较强的CPDA数据分析认证

深圳/东莞/惠州师资比较强的CPDA数据分析认证培训机构 CPDA数据分析师认证是中国大数据领域有一定权威度的中高端人才认证,它不仅是中国较早大数据专业技术人才认证、更是中国大数据时代先行者,具有广泛的社会认知度和权威性。 无论是地方政府引进人才、…

synchronized和ReentrantLock有什么区别呢?

第15讲 | synchronized和ReentrantLock有什么区别呢? 从今天开始,我们将进入 Java 并发学习阶段。软件并发已经成为现代软件开发的基础能力,而 Java 精心设计的高效并发机制,正是构建大规模应用的基础之一,所以考察并发…

Golang学习Day1

😋 大家好,我是YAy_17,是一枚爱好网安的小白。本人水平有限,欢迎各位大佬指点,欢迎关注 😁,一起学习 💗 ,一起进步 ⭐ 。⭐ 此后如竟没有炬火,我便是唯一的光…