迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

如何在 Bash 中比较字符串

作者:迹忆客 最近更新:2023/03/17 浏览次数:

我们可以使用各种比较运算符比较字符串,并使用正则表达式检查字符串是否包含子字符串。

Bash 中的字符串比较

字符串比较是指检查给定的字符串是否相同。如果两个或多个字符串长度相同,并且包含相同的字符序列,那么它们就是相同的。

我们使用各种字符串比较运算符,根据条件返回真或假。一些被广泛使用的字符串比较运算符可以列举如下。

string1 = string2 [ 命令一起使用的等价运算符,如果两个操作数相等,则返回 true
string1 == string2 相等运算符与 [[ 命令一起使用,如果两个操作数都相等,则返回 true
string1 != string2 不等式运算符,如果两个操作数不相等,返回 true
string1 =~ regex Regex 运算符,如果 string1 符合扩展的 regex,则返回 true
string1 > string2 大于运算符,如果 string1 大于 string2,则根据词法(字母)顺序返回 true
string1 < string2 小于运算符,如果 string1 小于 string2,则根据词法(字母)顺序返回 true
-z string 如果 string 的长度是 0,返回 true
-n string 如果 string 的长度不是 0,返回 true
String1="Hello World!!"
String2="Hello World!!"

String3="Delft Stack"

if [ "$String1" = "$String2" ]; then
    echo "String1 and String2 are equal."
else
    echo "String1 and String2 are not equal."
fi

if [[ "$String1" == "$String2" ]]; then
    echo "String1 and String2 are equal."
else
    echo "String1 and String2 are not equal."
fi

if [[ "$String1" != "$String3" ]]; then
    echo "String1 and String3 are not equal."
else
    echo "String1 and String3 are equal."
fi

输出:

String1 and String2 are equal.
String1 and String2 are equal.
String1 and String3 are not equal.

这里,如果我们先用 = 运算符比较 String1String2。由于 String1String2 都具有相同的长度,具有相同的字符序列,比较运算符返回 true,因此我们得到 String1 and String2 are equal. 作为程序中第一个 if-else 块的输出。

同样,在第二个程序中,我们使用 == 运算符比较 String1String2。在这种情况下,我们需要使用 [[ 进行比较。

最后,我们使用!= 运算符比较 String1String3

Bash 中的词法比较

词法比较是指根据字母顺序来比较字符串。对于词法比较,我们使用 >< 运算符。

name1="Kamal"
name2="Abinash"

if [[ "$name1" > "$name2" ]]; then
    echo "${name1} is greater then ${name2}."
elif [[ "$name1" < "$name2" ]]; then
    echo "${name2} is greater than ${name1}."
else
    echo "Both the namees are equal"
fi

输出:

Kamal is greater then Abinash.

在这个程序中,name1name2 进行了词法比较。由于 K 在字母顺序中排在 A 之后,K 的值比 A 高,因此"$name1" > "$name2"返回 true,我们得到 Kamal is greater then Abinash. 作为输出。

检查一个字符串是否为空

我们使用"-n “和”-z “运算符来检查字符串是否为空。


String=""
if [[ -z $String ]]; then
  echo "The variable String is an empty string."
fi

输出:

The variable String is an empty string.

在这个程序中,string 是一个空变量。由于 -z 运算符返回 true,如果 string 的长度是 0,因此我们得到 The variable String is an empty string. 作为给定程序的输出。

String="Test"
if [[ -n $String ]]; then
  echo "The variable String is not an empty string."
fi

输出:

The variable String is not an empty string.

在这个程序中,String 是一个非空变量。由于 -n 运算符返回 true,如果 string 的长度不是 0,因此我们得到 The variable String is not an empty string. 作为给定程序的输出。

检查一个字符串是否包含子字符串

要检查一个字符串是否包含子字符串,我们可以使用 =~Regex)运算符。

如果字符串符合扩展的 regex 表达式,regex 运算符返回 true。我们必须制作一个合适的 regex 表达式进行比较。

String='My name is Delft.'
if [[ $String =~ .*Delft.* ]]; then
  echo "The given string has Delft on it."
fi

输出:

The given string has Delft on it.

这里,.*Delft.*是要匹配的 regex 表达式,它表示匹配 Delft. 之前和之后的任何字符串,0 个或更多字符。它检查字符串中是否有子字符串 Delft

由于 Delft 存在于给定的字符串中,给定的条件得到满足,我们得到 The given string has Delft on it. 作为输出。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

MySQL 中将字符串附加到现有字段

发布时间:2023/05/08 浏览次数:63 分类:MySQL

本文我们将学习使用 CONCAT() 和 CONCAT_WS() 函数在 MySQL 字段中连接或附加字符串值。使用 CONCAT() 和 CONCAT_WS() 将字符串附加到 MySQL 中的现有字段

MySQL 将字符串拆分成行

发布时间:2023/05/08 浏览次数:68 分类:MySQL

在本文中,我们将讨论什么是将字符串拆分为行以及如何创建一个自执行函数。 我们主要讨论 SUBSTRING_INDEX() 方法以及一些示例以轻松理解该概念。

在 C 语言中获取字符数组的长度

发布时间:2023/05/07 浏览次数:166 分类:C语言

本文演示了如何在 C 语言中获取一个 char 数组的长度。使用 sizeof 运算符来查找字符数组的长度 数组的大小可以用 sizeof 运算符计算,而不考虑元素的数据类型。

在 C 中创建格式化字符串

发布时间:2023/05/06 浏览次数:68 分类:C语言

这是一篇关于在 C 编程语言中格式化字符串的紧凑文章。本文讨论如何使用 C 语言格式化字符串,就像我们在 printf() 函数中所做的那样。

GoLang 如何将文件读入字符串

发布时间:2023/04/27 浏览次数:189 分类:Go

Go语言提供了很多文件操作工具,其中之一就是如何将文件读入字符串。 ioutil.ReadFile() 、File.Read() 、buf.ReadFrom() 和 strings.Builder 只是可用于高效地将文件内容写入字符串的几种方法。

在 Go 中获取结构体的字符串表示

发布时间:2023/04/27 浏览次数:123 分类:Go

Go 允许我们使用多种简单的标准方法从结构中序列化数据。在 Go 中使用 String 方法将结构体转换为字符串

在 Python 中获取字符串的一部分

发布时间:2023/04/24 浏览次数:69 分类:Python

本文将研究如何在 Python 中获取字符串的一部分。 在某些情况下,我们需要在 Python 中获取原始字符串的某些字母或元素。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便