Bash字符串处理(与Java对照) - 11.比较两个字符串大小(字典顺序、数值比较)...

Bash字符串处理(与Java对照) - 11.比较两个字符串大小(字典顺序、数值比较)

In Java

String.compareTo

int     compareTo(String anotherString)
          按字典顺序比较两个字符串。如果返回0,表示相等;<0表示小于;>0 表示大于。

 

int     compareToIgnoreCase(String str)
          不考虑大小写,按字典顺序比较两个字符串。

 

In Bash

判断是否大于(字典顺序)

格式1:[ "$S1" \> "$S2" ]

判断S1是否大于S2,注意转义字符\的使用,否则bash会认为是标准输出重定向。

下面两种写法也是可以的:

格式2:[ "$S1" '>' "$S2" ]

格式3:[ "$S1" ">" "$S2" ]

使用bash关键字[[来判断,不再需要对变量加双引号,也不需要对>进行转义。

格式4:[[ $S1 > $S2 ]]

 

[root@jfht ~]# S1=Hello
[root@jfht ~]# S2=World

[root@jfht ~]# if [ "$S1" \> "$S2" ]; then echo ">"; fi

[root@jfht ~]# [ "$S1" '>' "$S2" ] && echo '>'  
[root@jfht ~]# [ "$S1" ">" "$S2" ] && echo '>' 

[root@jfht ~]# [[ $S1 > $S2 ]] && echo '>'

[root@jfht ~]# [ "$S2" \> "$S1" ] && echo ">"
>
[root@jfht ~]#

 

判断是否小于(字典顺序)

格式1:[ "$S1" \< "$S2" ]

判断S1是否小于S2,注意转义字符\的使用,否则bash会认为是标准输入重定向。

下面两种写法也是可以的:

格式2:[ "$S1" '<' "$S2" ]

格式3:[ "$S1" "<" "$S2" ]

使用bash关键字[[来判断,不再需要对变量加双引号,也不需要对>进行转义。

格式4:[[ $S1 < $S2 ]]

 

 

[root@jfht ~]# S1=Hello
[root@jfht ~]# S2=World

[root@jfht ~]# if [ "$S1" \< "$S2" ]; then echo "<"; fi
<

[root@jfht ~]# [ "$S1" '<' "$S2" ] && echo '<'
<
[root@jfht ~]# [ "$S1" "<" "$S2" ] && echo '<' 
<

[root@jfht ~]# [[ $S1 < $S2 ]] && echo '<'
<

 

判断是否大于等于(不小于)(字典顺序)

在bash中并没有 >= 操作符。

如果我们要实现 >= 比较,其实就是判断 > 或者 = ,需要采用 -o 操作符来进行。

man test 写道
       EXPRESSION1 -o EXPRESSION2
              either EXPRESSION1 or EXPRESSION2 is true

 

格式1:test "$S1" \> "$S2" -o "$S1" = "$S2"

格式2:[ "$S1" \> "$S2" -o "$S1" = "$S2" ]

还可以根据前面所述的 < 和 = 判断的方法,组合出很多写法,此处不一一列出。

如果用[[来进行,就不需要双引号和转义符。

man bash [[ ]] 写道
              expression1 || expression2
                     True if either expression1 or expression2 is true.
 

格式3:[[ $S1 > $S2 || $S1 = $S2 ]]

上述格式显得繁琐,也可以用 非操作(!) 来实现,因为“大于等于”就是“不小于”。

man bash [[ ]] 写道
              ! expression
                     True if expression is false.
 

格式4:[[ ! $S1 < $S2 ]]

 

[root@jfht ~]# S1=abc
[root@jfht ~]# S2=abd
[root@jfht ~]# [ "$S1" \> "$S2" -a "$S1" = "$S2" ] && echo ">="
[root@jfht ~]# [[ $S1 > $S2 || $S1 = $S2 ]] && echo ">="

[root@jfht ~]# [[ ! $S1 < $S2 ]] && echo ">="
[root@jfht ~]#

 

 

判断是否小于等于(不大于)(字典顺序)

在bash中实现 <= 的判断,也必须采用判断 < 或者 = 来进行。

格式1:test "$S1" \< "$S2" -o "$S1" = "$S2"

格式2:[ "$S1" \< "$S2" -o "$S1" = "$S2" ]

格式3:[[ $S1 < $S2 || $S1 = $S2 ]]

格式4:[[ ! $S1 > $S2 ]]

 

[root@jfht ~]# S1=abc
[root@jfht ~]# S2=abd
[root@jfht ~]# [ "$S1" \< "$S2" -o "$S1" = "$S2" ] && echo "<="
<=
[root@jfht ~]# [[ $S1 < $S2 || $S1 = $S2 ]] && echo "<="
<=
[root@jfht ~]# [[ ! $S1 > $S2 ]] && echo "<="
<=
[root@jfht ~]#

 

数值比较

注意:每种比较运算都可以写成好几种格式:

test格式:比较运算符为“-字母缩写”形式(见后面详细说明)。

[]格式:等价于test。

[[]]格式:其中的变量引用不需要加双引号,比较运算符与test同。

(())格式:其中的变量不需要加$符号,比较运算符的写法与Java同。

 

等于:eq uals

test "$VAR1" -eq "$VAR2"

[ "$VAR1" -eq "$VAR2" ]

[[ $VAR1 -eq VAR2 ]]

((VAR1 == VAR2))

 

大于等于(不小于):g reater e qual

test "$VAR1" -ge "$VAR2"

[ "$VAR1" -ge "$VAR2" ]

[[ $VAR1 -ge $VAR2 ]]

((VAR1 >= VAR2))

 

大于:g reater t han

test "$VAR1" -gt "$VAR2"

[ "$VAR1" -gt "$VAR2" ]

[[ $VAR1 -gt $VAR2 ]]

((VAR1 > VAR2))

 

小于等于(不大于):l ess e qual

test "$VAR1" -le "$VAR2"

[ "$VAR1" -le "$VAR2" ]

[[ $VAR1 -le $VAR2 ]]

((VAR1 <= VAR2))

 

小于:l ess t han

test "$VAR1" -lt "$VAR2"

[ "$VAR1" -lt "$VAR2" ]

[[ $VAR1 -lt $VAR2 ]]

((VAR1 < VAR2))

 

不等于:n ot e quals

test "$VAR1" -ne "$VAR2"

[ "$VAR1" -ne "$VAR2" ]

[[ $VAR1 -ne $VAR2 ]]

((VAR1 != VAR2))

 

[root@web ~]# VAR1=1234
[root@web ~]# VAR2=4321
[root@web ~]# test "$VAR1" -eq "$VAR2" && echo eq
[root@web ~]# test "$VAR1" -ne "$VAR2" && echo ne
ne
[root@web ~]#

 

man test 写道
INTEGER1 -eq INTEGER2
INTEGER1 is equal to INTEGER2

INTEGER1 -ge INTEGER2
INTEGER1 is greater than or equal to INTEGER2

INTEGER1 -gt INTEGER2
INTEGER1 is greater than INTEGER2

INTEGER1 -le INTEGER2
INTEGER1 is less than or equal to INTEGER2

INTEGER1 -lt INTEGER2
INTEGER1 is less than INTEGER2

INTEGER1 -ne INTEGER2
INTEGER1 is not equal to INTEGER2

 

man bash 写道
((expression))
The expression is evaluated according to the rules described below under ARITHMETIC EVALUATION. If the
value of the expression is non-zero, the return status is 0; otherwise the return status is 1.

[[ expression ]]
Return a status of 0 or 1 depending on the evaluation of the conditional expression expression.
 

[root@web ~]# ((1==1)) && echo "=="
==
[root@web ~]# ((1==2)) && echo "=="
[root@web ~]# I1=100
[root@web ~]# I2=200
[root@web ~]# ((I1==I2)) && echo "=="
[root@web ~]# ((I1!=I2)) && echo "!="
!=
[root@web ~]# ((I1<I2)) && echo "<"  
<
[root@web ~]# ((I1<=I2)) && echo "<="
<=
[root@web ~]# ((I1>I2)) && echo ">"  
[root@web ~]# ((I1>=I2)) && echo ">="
[root@web ~]#

 

 

本文链接:http://codingstandards.iteye.com/blog/1176767   (转载请注明出处)

返回目录:Java程序员的Bash实用指南系列之字符串处理(目录) 

上节内容:Bash字符串处理(与Java对照) - 10.判断两个字符串是否相等(不等)

下节内容:Bash字符串处理(与Java对照) - 12.字符串连接

 

 

告别QXDM:在Android Studio中调试与验证高通NV读写功能的完整流程 本文详细介绍了在Android Studio中调试与验证高通NV分区读写功能的完整流程,替代传统的QXDM工具。通过JNI接口层、HAL服务层和Diag通信层的架构设计,开发者可以在熟悉的IDE环境中高效完成NV操作,包括环境配置、错误处理和性能优化等关键实践。 阅读详情

相关推荐

01-认识脑电信号及相关信号的预处理过程

脑电信号处理过程脑电实验为什么要预处理预处理方法降采样如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 脑电实验 本博客主要是记录基于脑电信号的情绪识别方法的研究...

脑机交流者的博客 7658

如何在Bash中比较字符串

如何将变量与字符串进行比较(如果匹配则执行某些操作)?

asdfgh0077的博客 2167

STM32与小米CyberGear微电机的CAN通信协议深度解析

本文深度解析STM32与小米CyberGear微电机的CAN通信协议,涵盖硬件连接、CAN总线配置、通信协议解析及多电机协同控制。重点介绍了基于STM32的电机控制实践,包括运动模式、速度与位置模式设置,以及数据反馈与故障诊断,为机器人及自动化设备开发提供实用指南。

www00的博客 359

bash中执行比较的几种方法

bash 脚本中的 test 命令用于检查表达式的有效性,检查命令或表达式为 true 或者 false。上面的例子我们是使用的一行代码做的演示,除此以外,我们还可以在 bash 脚本中使用 test 命令以及 if else 分支条件。如果这两个字符串不相等,则返回0。如果两个字符串相等,则返回0;除了整数以外,也可以在 bash 中使用 test 命令比较字符串,下面我们来看一些例子。-le 运算符检查整数1是否小于或等于整数2。如果给定的表达式有效,则执行第一个命令,否则执行第二个命令。

TRY 1369

Ubuntu安装opencv4.5(自己安装过程详细)

1.下载opencv 在opencv官网下载source版,下载链接 http://opencv.org/releases.html。别下载错版本 下载过程就不多说了。 2.安装过程 2.1解压 unzip opencv-4.5.0.zip cd opencv-4.5.0 2.2安装依赖的库 sudo apt-get install cmake sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-

weixin_45629790的博客 1万+

Sigrity Power DC Single-BoardPackage IR Drop Analysis模式进行单板压降仿真分析操作指导

如果需要单独对某个via设置参数,右侧选择Setup by padstack,下方下拉选择某个via,单独设置参数即可。举例:板厚1.6mm,内层1OZ(1.2mil,即0.03mm),铜皮宽度1mm,20度温升,允许通流I为2.5A。目的是模拟实际情况,via的孔壁电镀1mil,中间是空心的,让via不完全被填充金属成为实心via。Upper/lower Tolerance:上下公差,设置为5%,也就是压降允许的范围。电流密度计算公式:J=I/A(J为电流密度,I为电流,A为横截面积)

weixin_54787054的博客 695

[Java] 时间字符串比较的几种方法

最近一直写程序分析软件Trace, 所以Trace中的时间戳要处理一下...经常遇到的一个问题是比较给定格式的时间字符串的先后顺序,由于字符串包含英文月份, e.g. Aug, Jan, May, etc.所以需要用SimpleDateFormat格式化: new SimpleDateFormat("MMM dd HH:mm:ss yyyy", Locale.US);其中要解析英文月份的话必须用j...

perry_x的专栏 1万+

Python爬虫实战:链家/贝壳租房数据抓取与可视化分析平台

本文详细介绍了如何使用Python爬虫技术抓取链家/贝壳网站的租房信息,并构建一个完整的数据可视化分析平台。文章涵盖了从数据抓取、数据清洗、数据存储到数据可视化的全流程,使用最新的Python技术栈,包括AsyncIOPandasMongoDB和Pyecharts等库。本系统可作为毕业设计项目,提供了完整的代码实现和架构设计。关键词:Python爬虫、数据抓取、数据可视化、链家、贝壳、租房信息、毕业设计。

2201_76125261的博客 1206

Linux用bash写脚本(2)

在写脚本时,有时需要做一些比较,例如,两个数字谁大谁小,两个字符串是否相同等。做对比的表达式有[]、[[]]、test,其中[]和 test这两种表达式的作用是相同的。[[]]和[]的不同在于,[[]]能识别通配符和正则表达式中的元字符,[]却不能。需要注意的是,在比较时,中括号和后续提及的比较符两边都要留有空格。

TK_Anzu的博客 305

【RT-DETR涨点改进】小目标检测、特征融合改进篇 | TGRS 2024 | RT-DETR引入CSFM上下文选择融合模块,适合多模态检测、红外小目标检测、小目标检测、遥感目标检测等任务有效涨点

本文提出了一种改进RT-DETR目标检测模型的方法,通过引入上下文选择融合模块(CSFM)显著提升复杂背景下小目标和低对比度目标的检测精度。CSFM模块采用多尺度特征融合和动态特征选择机制,有效增强模型的全局上下文感知能力,同时保留细节特征。该模块通过通道减少机制和空间信息调节,实现从粗到细的特征聚合,减少误报并提高轮廓检测精度。实验表明,改进后的RT-DETR模型在多个基准测试中表现优异,计算效率与检测精度均优于现有方法。文章还详细介绍了模块配置和yaml文件修改方法,为模型部署提供指导。

Ai缝合怪、助力小伙伴高效发论文 1723

【STM32系统】基于STM32+手机APP设计的智能停车场系统

功能简介1、进出停车场时需要刷卡,进行一个记时、计费的功能。2、停车位配有超声波检测,主要识别车位是否被占用。3、车位区域配有OLED显示屏,用户可以通过显示屏看到空闲车位。4、车位配有车位灯。当用户找不到车位可以通过手机点亮车位灯5、停车场配有温湿度检测和烟雾检测模块。当环境发生异常状态。会触动紧急报警。6、停车场信息会通过Wi-Fi发送数据上传至阿里云。用户可以通过手机了解到停车场空闲车位和停车时间、费用。

嵌入式阿齐Archie 2万+

bash中的数值、字符串、文件比较

Bash常用的三种比较方式:1、数值比较2、字符串比较3、文件比较数值比较:-eq:等于-ge:大于或等于-gt:大于-le:小于或等于-lt:小于-ne:不等于字符串比较:=:等于 !=:不等于<:小于。需要使用转义字符>:大于。需要使用转义字符-n:字符串长度是否大于0...

weixin_34127717的博客 282

基于非接触式微波雷达设计的睡眠监控系统_323

本项目设计了一种基于非接触式微波雷达的睡眠监控系统,通过高精度的生理信号采集与分析,帮助用户全面了解自身的睡眠状态和健康状况。系统采用60GHz频段的R60ABD1毫米波雷达模块,实现对人体呼吸频率、心率、活动状态、体动幅度等参数的非接触式测量;结合MLX90614红外体温传感器,能够实时监测人体体温。此外,系统通过蜂鸣器报警和数据上云功能,及时向用户反馈异常生理指标,确保健康风险早期预警。数据通过ESP8266-WIFI模块上传至华为云物联网平台,用户可通过Android手机APP和Windows上位机远

499

Bash字符串处理(与Java对照) - 12.字符串连接

Bash字符串处理(与Java对照) - 12.字符串连接 In Java String.concat String     concat(String str)           将指定字符串联到此字符串的结尾。   String newStr = str.concat(str2);   StringBuilder.append &amp; StringBuffer...

巨人站在肩膀上 171

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java程序员的Bash实用指南系列之字符串处理(目录)

Java程序员的Bash实用指南系列之字符串处理(目录) 文章   在一般的计算机编程语言中,字符串处理是很重要的一块,Bash也是如此,如果掌握了字符串的处理,基本上就能够应付大部分的编程工作了。在Unix/Linux操作系统中,很多时候需要使用多个命令一起配合才能完成一个较复杂的任务,Shell提供了管道线、重定向、结构化编程等方式,把这些命令粘合在一起。因此,命令之间的接口数据的处理

Nicholas的专栏 QQ1295794532 1139

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Shell脚本流程控制:if-then-elif-else语法详解与实战应用

流程控制是编程语言的核心概念,它使程序能够根据不同的条件执行不同的代码路径,从而实现智能化的决策逻辑。在Shell脚本编程中,流程控制是实现自动化任务从简单命令批处理升级为复杂逻辑工具的关键。其技术价值在于赋予脚本环境感知和动态响应的能力,极大地提升了运维自动化和任务处理的效率。典型的应用场景包括系统监控、日志分析、文件管理、服务部署等日常运维工作。本文聚焦于Shell脚本中最基础且使用频率最高的分支判断语句——if-then-elif-else结构,深入剖析其语法细节,并对比经典`[ ]`测试命令与现代`

weixin_34242819的博客 350

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

HBase rowkey:字节数组(byte[]),不是数字也不是字符串

HBase的rowkey本质上是字节数组(byte[]),既不是数字也不是字符串。它按照字节的字典序逐字节比较排序,而非数值大小。用户使用时看似数字,实际上是字符串形式的数字字符(如"001"存储为字节[48,48,49])。

木木的学习笔记 303

linux记忆栏

注意:数组下标与java相同,都是从0开始。序号方式示例1数组名=(值0 值1 值2 ...)2数组名=([0]=值 [1]=值 [2]=值 ...)3列表名="值0 值1 值2 ..."数组名=($列表名)4数组名[0]="值"数组名[1]="值"数组名[2]="值"......在bash中使用declare -A 集合名称 进行定义。

m0_60315945的博客 398

Python字符串函数深度解析:从基础操作到性能优化实战

字符串处理是编程语言中的基础核心概念,它涉及对文本数据的创建、修改、分析和转换。其原理在于通过内置函数对不可变的字符序列进行操作,高效处理用户输入、数据清洗和格式化等任务。掌握字符串操作的技术价值在于能显著提升代码的健壮性和执行效率,是编写高质量软件的关键。在应用场景上,无论是网络爬虫、日志分析、配置文件解析还是报告生成,都离不开字符串的精确处理。本文聚焦于Python中常用字符串函数的深度解析,特别针对 `str.replace()` 的性能陷阱和 `join()` 的高效实践进行了详细探讨,帮助开发者从

weixin_34221332的博客 362

Shell编程快速入门

Shell 编程学习笔记——初探shell语法 如何使用bash执行脚本 bash < test.sh bash test.sh // bash 脚本名 [参数] ./test.sh // 这种方式会使用脚本内的#! 后面的参数 比如#! /bin/bash -v 相当于 bash test.sh -v . test.sh // · ex3[参数] 变量赋值 dir = `pwd` dir = $(pwd) // $(命令表) 数组 Bash 只提供一维数组,并且没有限

tainxu的博客 227

Python 基础入门:Java 开发者视角

Python与Java核心概念差异对比 摘要 本文面向有Java经验的开发者,通过对比两种语言的核心概念差异,帮助快速建立Python的正确思维模型。主要内容包括: 环境与工具链:Python使用VS Code开发、pip/poetry管理依赖,强调虚拟环境隔离 核心概念对比: 类型系统:Java是静态强类型,Python是动态强类型 执行方式:Java需要编译,Python直接解释执行 入口点:Java强制main方法,Python通过if __name__ == "__main__":实现可选入口 模块

m0_54123999的博客 262

Python语言学习笔记

本文系统性地介绍了Python编程的核心知识体系,主要内容涵盖: 数据容器 列表(list):创建、增删改查、排序、切片等操作 字符串(str):不可变性、索引切片、常用方法 元组(tuple):不可变性、组包解包 集合(set):去重特性、集合运算 字典(dict):键值对存储、增删改查 函数编程 函数定义与调用 参数传递(位置参数、关键字参数、默认参数) 不定长参数(*args和**kwargs) 匿名函数(lambda) 递归函数 类型注解 面向对象 类与对象概念 属性与方法 魔法方法(init、__

m0_70773811的博客 334

Trimmomatic安装与实战:NGS数据质控核心工具详解

在生物信息学领域,高通量测序(NGS)数据分析的第一步是数据质控,其核心在于去除原始读段中的测序接头和低质量碱基,确保下游分析的准确性。这一过程依赖于特定的生物信息学工具,通过算法扫描和修剪读段,提升数据质量。Trimmomatic作为一款广泛使用的Java工具,以其稳定的双端数据同步处理能力和灵活的质控参数,在科研与工程实践中展现出重要价值。它能够有效处理Illumina等平台的测序数据,通过ILLUMINACLIP步骤精准切除接头,并利用SLIDINGWINDOW等参数进行质量修剪,适用于基因组、转录组

weixin_30904593的博客 531

shell编写脚本

shell脚本编写方法

m0_57802932的博客 241

Python基础语法精要与核心概念解析

Python作为动态类型语言,其变量与数据类型机制是编程基础的核心。理解整型、浮点型等基本数据类型的存储原理,掌握运算符的短路特性与对象引用机制,是编写高效Python代码的前提。在工程实践中,合理的控制流程结构和函数设计能显著提升代码可维护性。本文深入解析Python基础语法的关键要点,包括变量作用域LEGB规则、参数传递机制等核心概念,帮助开发者规避常见陷阱,为后续学习面向对象编程和高级特性奠定坚实基础。

weixin_30535843的博客 415

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+
上一篇: Bash字符串处理(与Java对照) - 10.判断两个字符串是否相等(不等)
下一篇: Bash字符串处理(与Java对照) - 12.字符串连接
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值