shell中[[]]与[],=、==和-eq的辨析

2023-09-21 17:02:46

1、==、=和-eq

在shell中,===运算符都可以用于判断两个字符串、两个字符串变量是否相同,== 支持模式匹配,而= 不支持模式匹配。
使用 -eq 来判断两个整数是否相等。

# 字符串比较
# 给变量赋值时,等号前后没有空格,有空格时是条件判断
string1=abc
string2=bcd
# [ "$string1" = "$string2" ]内的空格是必须的!!
if [ "$string1" = "$string2" ]; then
    echo "The strings are equal"
fi

#整数比较
num1=123
num3=123
# 注意中括号内的空格!!
if [ "$num1" -eq "$num2" ]; then
    echo "The numbers are equal"
fi

2、[[ ]] 和 [ ]

在 shell 脚本中,[[[ 都可以用于条件测试。
  [ 是一个标准的 Unix 命令,也被称为 test。它在所有 POSIX shell 中都可用,包括 sh、bash、ksh、dash 等。
  [[ 是 bash 和其他一些现代 shell(如 zsh 和 ksh)中的关键字,提供了比 [ 更强大的功能。例如,它支持字符串模式匹配和正则表达式匹配
[[[ 中,进行条件判断时,是使用=还是==呢?
  对于[,一般使用=进行条件判断,==不是一个标准的运算符,但是在某些shell(比如bash)中,在[使用==是可以的。对于[[===都可以在[[用于字符串比较, -eq用于整数比较。
  他们之间的对应关系: =用在[ 中; ==用在[[中。这样用是不会出错的。

[的用例:

if [ "$variable" = "value" ]; then
    echo "The variable equals the value"
fi

[[的用例:

# 支持通配符匹配
if [[ "$variable" == value* ]]; then
    echo "The variable starts with 'value'"
fi
# 支持正则表达式匹配
if [[ "$variable" =~ ^value ]]; then
    echo "The variable starts with 'value'"
fi

总结起来就是,[]支持的shell类型更多,兼容性更好,而[[]]的功能更强大。

更多推荐

AERMOD模型在大气环境影响评价中的应用

随着我国经济快速发展,我国面临着日益严重的大气污染问题。近年来,严重的大气污染问题已经明显影响国计民生,引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果,同时气象因素是控制大气污染的关键自然因素。大气污染问题既是局部、当地的,也是区域的,甚至是全球的。本地的污染物排放

【web开发】8、Django(3)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、管理员1.表结构2.layout.html文件下添加管理员账号的导航3.urls.py文件(POST请求传递nid)4.form.py文件(密码加密,确认密码,重置密码与原密码要求不一致)5.admin.py文件二、中间件(实现登录校验)1

【JAVA】idea初步使用+JDK详细配置

1、官方下载idea官网:DownloadIntelliJIDEA–TheLeadingJavaandKotlinIDE(1)、下载教程我下载没截屏,详细教程请看原文:手把手教你JDK+IDEA的安装和环境配置_idea配置jdk_快到锅里来呀的博客-CSDN博客2、启动项目时候需要配置JDK环境(1)、下载JDK官网

Jmeter安装与测试

目录一:JMeter简介:二:JMeter安装与配置三:JMeter主要原件一:JMeter简介:JMeter,一个100%的纯Java桌面应用,由Apache组织的开放源代码项目,它是功能和性能测试的工具。具有高可扩展性、支持Web(HTTP/HTTPS)、SOAP、FTP、JAVA等多种协议的特点。官方网站:htt

方案:浅析利用AI智能识别与视频监控技术打造智慧水产养殖监管系统

一、方案背景针对目前水产养殖集约、高产、高效、生态、安全的发展需求,基于智能传感、智慧物联网、人工智能、视频监控等技术打造智慧水产系统,成为当前行业的发展趋势。传统的人工观察水产养殖方式较为单一,难以及时发现人员非法入侵、偷盗、偷钓、水质污染等管理问题。二、方案概述TSINGSEE青犀视频智慧水产养殖方案主要是围绕视频

TDengine 与煤矿智能 AI 视频管理系统实现兼容性互认

煤矿行业是一个充满危险和复杂性的领域,具备产业规模大、分布地域广、安全性要求高等特点,为了实现智能化预警、预测等目的,煤矿企业纷纷采用现代化的技术来提高安全性、生产效率和管理水平。煤矿智能AI视频管理系统可以助力企业更好地进行矿工工作环境监测、异常情况报警等工作,从而提高安全性并减少事故风险,在煤矿项目中已经得到了广泛

做接口测试如何上次文件

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试)在日常工作中,经常有上传文件功能的测试场景,因此,本文介绍两种主流编写上传文件接口测试脚本的方法。首先,要知道文件上传的一般原理:客户端根据文件路径读取文件内容,将文件内容转换成二进制文件流的格式传输给

PASCAL VOC2012数据集详细介绍

PASCALVOC2012数据集详细介绍0、数据集介绍2、PascalVOC数据集目标类别3、数据集下载与目录结构4、目标检测任务5、语义分割任务6、实例分割任务7、类别索引与名称对应关系0、数据集介绍2、PascalVOC数据集目标类别在PascalVOC数据集中主要包含20个目标类别,下图展示了所有类别的名称以及所

关于String、StringBuffer、StringBuilder

1.String可以被继承吗?String类由final修饰,所以不能被继承。扩展阅读在Java中,String类被设计为不可变类,主要表现在它保存字符串的成员变量是final的。Java9之前字符串采用char[]数组来保存字符,即privatefinalchar[]value;Java9做了改进,采用byte[]数

【人工智能】企业如何使用 AI与人工智能的定义、研究价值、发展阶段的深刻讨论

前言人工智能(ArtificialIntelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是新一轮科技革命和产业变革的重要驱动力量。📕作者简介:热爱跑步的恒川,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐

Maven 直接依赖、间接依赖、依赖冲突、依赖仲裁

文章目录直接依赖和间接依赖依赖冲突Maven的依赖仲裁最短路径优先先声明优先手动解决依赖冲突直接依赖和间接依赖在项目中直接引入的依赖叫做直接依赖,而那些被动引入的就叫间接依赖比如上图中,A是我们的项目,我们在项目中直接引入了B模块,所以B和A的关系就是直接依赖,而B工程内部引入了C,所以B和C也是直接依赖关系,如果B工

热文推荐