linux条件测试的三种,shell编程之条件测试 | 旺旺知识库

一、条件测试语法:

test 测试内容

[ 测试内容 ]      ##注意中括号与测试内容间有空格

[[ 测试内容 ]]

(( 测试内容 ))   ##只能用于测试数值大小,后面详解

前三种测试语法基本等同。

二、数值测试:

2.1 常见的数值测试:

int1 -eq int2 如果int1 等于int2,则返回真

int1 -ne int2 如果int1 不等于int2,则返回真

int1 -lt int2 如果int1 小于int2,则返回真

int1 -gt int2 如果int1 大于int2,则返回真

int1 -le int2 如果int1 小于等于int2,则返回真

int1 -ge int2如果int1 大于等于int2,则返回真

2.2 在((  ))中测试

< 小于(在双括号里使用) (("int1" < "int2"))  等同于 [ int1 -lt int2 ]

[root@server1 ~]# (( "2" < "3" ))

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ 1 -lt 3 ]

[root@server1 ~]# echo $?

0

<= 小于等于 (在双括号里使用) (("int1" <= "int2"))   等同于 [ int1 -ne int2 ]

> 大于 (在双括号里使用) (("int1" > "int2"))  等同于 [ int1 -gt int2 ]

>= 大于等于(在双括号里使用) (("int1" >= "int2")) 等同于 [ int1 -ge int2 ]

注意:双括号测试不能测试数值相等的情况,使用双括号测试等于是会报如下错误:

[root@server1 ~]# (( "2" = "3" ))

-bash: ((: 2 = 3 : attempted assignment to non-variable (error token is "= 3 ")

3、测试字符串:

-z string 字符串string 为空串(长度为0)时返回真

-n string 字符串string 为非空串时返回真

str1 = str2 字符串str1 和字符串str2 相等时返回真

str1 == str2 同 =

str1 != str2 字符串str1 和字符串str2 不相等时返回真

str1 < str2 按字典顺序排序,字符串str1 在字符串str2 之前,一般不会用到

str1 > str2 按字典顺序排序,字符串str1 在字符串str2 之后,一般不会用到

测试示例:

[root@server1 ~]# A=str

[root@server1 ~]# B=str

[root@server1 ~]# [ $A = $B ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# B=Str

[root@server1 ~]# [ $A = $B ]

[root@server1 ~]# echo $?

1

[root@server1 ~]# [ -n $B ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ -z $B ]

[root@server1 ~]# echo $?

1

4、文件测试:

-b FILE存在并且是块文件时返回真;

-c FILE存在并且是字符文件时返回真;

-e FILE 文件或目录存在时返回真;

-f FILE 文件为普通文件时返回真;

-d FILE 指定路径为目录时返回真;

-r FILE 当前用户对指定文件有读取权限时返回真;

-w FILE 当前用户对指定的目录或文件存在并并可写时返回真;

-x FILE 当前用户对指定的文件或目录存在并且可执行时返回真;

-s FILE 指定文件存在并且文件大小大于0时返回真

-O FILE 存在并且属于当前进程的有效用户id 的用户的用户组时返回真

-G FILE 存在并且属于当前进程的有效用户id 的用户的用户组时返回真

FILE1 -nt FILE2 当FILE1比FILE2新时返回真

FILE1 -ot FILE2 当FILE1比FILE2旧时返回真

FILE1 -ef FILE2 当FILE1和FILE2硬链接到同一个文件时返回真

测试示例:

[root@server1 ~]# [ -d /etc/sysconfig/network ]

[root@server1 ~]# echo $?

1

[root@server1 ~]# [ -d /etc/sysconfig/network-scripts ]

[root@server1 ~]# echo $?

0

5、在测试中使用逻辑操作符:

5.1 单[]中的逻辑测试符

-a 逻辑与,操作符两边均为真,结果为真,否则为假

-o 逻辑或,操作符两边一边为真,结果为真,否则为假

! 逻辑否,条件为假,结果为真

测试示例:

[root@server1 ~]# [ -d /etc/sysconfig/network-scripts -o -e /etc/fstabs ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ -d /etc/sysconfig/network-scripts -a -e /etc/fstabs ]

[root@server1 ~]# echo $?

1

[root@server1 ~]# [ -d /etc/sysconfig/network-scripts -a -e /etc/fstab ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ -d /etc/sysconfig/network-scripts -o -e /etc/fstabs ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ ! -e /etc/fstabs ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ -e /etc/fstabs ]

[root@server1 ~]# echo $?

1

##注意标红部分不一样的地方

5.2 双[[]]中的逻辑测试符:

&& 逻辑与,操作符两边均为真,结果为真,否则为假,功能上与 -a 相同

||  逻辑或,操作符两边一边为真,结果为真,否则为假,功能上与 -o 相同

测试示例:

[root@server1 ~]# [ -b /dev/sdb -a -e /etc/fstab ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [[ -b /dev/sdb && -e /etc/fstab ]]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [[ -b /dev/sdb && -e /etc/fstabs ]]

[root@server1 ~]# echo $?

1

[root@server1 ~]# [[ -b /dev/sdb || -e /etc/fstabs ]]

[root@server1 ~]# echo $?

0

另外,测试还支持通配符,如:

[root@server1 ~]# [ -e /etc/in*t ]

[root@server1 ~]# echo $?

0

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

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

相关文章

是vans_硬核复刻,就服VANS棋盘格

近几年复刻已成为 Sneaker 圈的新趋势&#xff0c;各大品牌纷纷将自家经典且具有年代感的鞋款复刻再造。而这其中最硬核的还要属 VANS &#xff0c;在今年三月释出 VANS X FAST TIMES 鞋款&#xff0c;标志性的棋盘格元素加上醒目亮眼的红字 Logo &#xff0c;为穿着者带来不一…

使用SDKMAN管理多个Java SDK! 轻松

SDKMAN&#xff01; 是用于管理多个软件开发套件的并行版本的便捷工具。 该工具对Java开发人员特别有用&#xff0c;因为它支持JVM的SDK&#xff0c;例如Java&#xff0c;Groovy&#xff0c;Scala&#xff0c;Kotlin和Ceylon。 还支持Gradle&#xff0c;Maven&#xff0c;Sprin…

linux wordpress伪静态,wordpress程序在win和Linux系统下的伪静态设置 - 张力博客

这是一篇很早就应该写的文章&#xff0c;而在昨天就有朋友问我&#xff0c;为什么不写一下关于wordpress的伪静态设置呢&#xff1f;今天这篇文章我就来跟大家说一下&#xff0c;关于wordpress程序在win和Linux系统下的伪静态设置方法。第一种&#xff1a;win系统下的wordpress…

Java并发编程实战_阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF

前言为了帮助初级开发者快速掌握高并发、网络编程、微服务、海量数据的处理这些实用技术&#xff0c;本文以“理论范例”的形式对各个知识点进行了详细的讲解&#xff0c;力争让读者在实践中快速掌握相关知识。为了让有java、数据库和web基础的学生&#xff0c;初、中级java开发…

r语言 林元震_科学网—R语言简介 - 林元震的博文

R既是软件&#xff0c;也是语言&#xff0c;在GNU协议General Public Licence下免费发行&#xff0c;是1995年由新西兰奥克兰大学统计系的Ross Ihaka和Robert Gentleman基于S语言基础上共同开发的一种统计软件。现在由R开发核心小组(R Development Core Team)负责维护与更新&am…

英特尔 620 显卡 驱动 七代cpu_英特尔的智能“整体厨房”

其实&#xff0c;英特尔的战略非常容易理解。做最智能的“橱具”、最智能的“橱柜”、最智能的“橱电”。然后&#xff0c;顺理成章地构建起最智能“整体厨房”。再然后&#xff0c;用户可以在最优适配的软硬件环境中&#xff0c;专注于对数据的烹饪。当然&#xff0c;这是只是…

linux kvm安装win7,详解在 KVM 上安装 Win7 虚拟机

详解在 KVM 上安装 Win7 虚拟机发布时间&#xff1a;2017-04-04 21:09来源&#xff1a;互联网当前栏目&#xff1a;web技术类之前都是在用Linux 虚机&#xff0c;现在有需要用到Win7 虚机&#xff0c;才发现在 KVM 上安装 Win7 的过程远比想象中的复杂。本文就把其过程做个简单…

linux 如何获得后缀_Bugku:杂项 linux

打开这道题&#xff0c;标题是linux&#xff0c;让人心中一紧。提示为linux基础问题。下载压缩包解压之后是一个文件&#xff0c;没有后缀名&#xff0c;用010 Editor打开看看。全是空啊&#xff01;&#xff01;&#xff01;&#xff01;突然在中间找到了一点点文字&#xff0…

gradle引入依赖:_Gradle入门:依赖管理

gradle引入依赖:即使不是没有可能&#xff0c;创建没有任何外部依赖关系的现实应用程序也是一项挑战。 这就是为什么依赖性管理是每个软件项目中至关重要的部分的原因。 这篇博客文章描述了我们如何使用Gradle管理项目的依赖关系。 我们将学习配置已使用的存储库和所需的依赖项…

jquery怎么判断不同的字显示不同的颜色_这个双十一,摄影师的显示器该换了,优派VP2785-2K显示器评测_显示器...

2020-11-03 23:07:380点赞0收藏0评论想攒一台电竞主机、家用主机、酷炫主机无从下手&#xff1f;想省钱又怕性能不达标&#xff1f;值得买帮你打造定制化DIY装机工具&#xff0c;自助全网比价装机&#xff0c;提供最适合的搭配方案&#xff0c;解决各种攒机场景下难题。>快快…

c语言字体取模软件下载,非常好用的lcd汉字取模软件下载_非常好用的lcd汉字取模软件官方下载-太平洋下载中心...

修正了华文中宋汉字模生成过程中的切(底)边现象&#xff0c;配合lcmsim排版仿真软件一起使用&#xff0c;可以大大提高单片机编程的工作效率。几点说明&#xff1a;1。打开功能是专门用于对c语言文件自动提取显示所需要的汉字&#xff0c;进行点阵码数据转换的&#xff0c;在您…

thymeleaf双重循环_spring boot: 用thymeleaf嵌套循环展示多层数据(spring boot 2.3.2)

一&#xff0c;什么情况下会用到嵌套循环&#xff1f;当我们展示多个分类时&#xff0c;每个分类下又展示出推荐的前几个商品&#xff0c;这时我们需要用到嵌套循环看一个例子&#xff1a;说明&#xff1a;作者:刘宏缔 邮箱: 371125307qq.com二&#xff0c;演示项目的相关信息1…

CUBA平台:TypeScript SDK和REST API

在本文中&#xff0c;我们将讨论已存在很长时间但尚未广为人知的CUBA平台的功能- 前端SDK生成器 &#xff0c;并了解它如何与CUBA的REST API插件一起使用 。 Java JavaScript –网络婚姻 仅八年前&#xff0c;我们Java开发人员在我们的Web应用程序中使用JavaScript作为“第二…

wifiphisher 依赖_铂瑞思:总是依赖别人的话,就永远也长不大

我们每个人都会或多或少的对他人产生依赖&#xff0c;依赖一词&#xff0c;可被定义为过度需要依靠他人的支持、指导、照顾和保护。但一部分人由于形成了与他人不同的思维与行为模式&#xff0c;导致了依赖型人格障碍的产生。依赖性人格障碍以过分依赖为特征&#xff0c;表现为…

米兔机器人自主编程_978个零件+自主编程,米兔机器人价格仅为友商八分之一...

作为一个“大孩子”&#xff0c;我也喜欢拼积木&#xff0c;看重了一款乐高的可变性积木竟然售价4000多&#xff0c;太贵了&#xff0c;实在买不起。然后就搜索到了小米的这款米兔儿童机器人&#xff0c;性能上能达到乐高95%以上&#xff0c;价格却只有八分之一&#xff0c;果断…

网站开发用什么语言好_网站开发教程:企业如何用网站开启在线业务?

用网站来开启互联网在线业务是很好的方法&#xff0c;对于创业型企业来说&#xff0c;进行自己的企业网站开发制作能够加快实现品牌业务目标。下面这个教程将会教你如何开展在线业务、并利用网站来扩大业务&#xff01;1.确定目标市场创业团队需要明确自己的目标市场&#xff0…

c语言字符指针初始化赋值,C语言_指针变量的赋值与运算,很详细详解

指针变量的赋值指针变量同普通变量一样&#xff0c;使用之前不仅要定义说明&#xff0c; 而且必须赋予具体的值。未经赋值的指针变量不能使用&#xff0c; 否则将造成系统混乱&#xff0c;甚至死机。指针变量的赋值只能赋予地址&#xff0c; 决不能赋予任何其它数据&#xff0c…

ospf工作原理_OSPF动态路由配置经典案例

前导知识点&#xff1a;静态路由结合上一讲讲解的距离矢量路由协议&#xff0c;本讲我们讲解链路状态路由协议----OSPF&#xff0c;相比较于RIP&#xff0c;OSPF能够支持大型网络&#xff0c;下面列出RIP和OSPF的对比图&#xff0c;进一步说明了OSPF的强大。RIP最多支持15台路由…

gridview ashx实现数据更新_Python分析了香港26281套在售二手房数据,结果发现

作者&#xff1a;J哥背景香港的贫富差距问题一直十分尖锐&#xff0c;最突出的体现就是收入和楼价的巨大差异。早在60年代末香港房价就经历了暴涨&#xff0c;人们早已对不动产的金融属性了如指掌&#xff0c;全港的投资情绪一直都相当火热。即便香港当前失业率高企&#xff0c…

线性单链表存储结构c语言代码,单链表定义-(线性表的链表存储结构)

线性表分为:顺序存储结构和连存储结构顺序存储结构的优点:1.空间利用率高,几乎不需要额外的空间开销.2.数据的逻辑结构和物理结构完全一致.3.结点地址计算的时间和线性表的规模大小无关.4.可以用一维数组实现存储.但是有两个致命的缺点:1.顺序存储结构的存储空间是静态分配,必须…