如何在 Bash 中比较字符串
我们可以使用各种比较运算符比较字符串,并使用正则表达式检查字符串是否包含子字符串。
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.
这里,如果我们先用 =
运算符比较 String1
和 String2
。由于 String1
和 String2
都具有相同的长度,具有相同的字符序列,比较运算符返回 true
,因此我们得到 String1 and String2 are equal.
作为程序中第一个 if-else
块的输出。
同样,在第二个程序中,我们使用 ==
运算符比较 String1
和 String2
。在这种情况下,我们需要使用 [[
进行比较。
最后,我们使用!=
运算符比较 String1
和 String3
。
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.
在这个程序中,name1
和 name2
进行了词法比较。由于 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.
作为输出。
相关文章
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 浏览次数:190 分类:Python
-
在 Python 中,有两种主要方法可用于将数据写入文本文件,即 open() 方法和内置的 pathlib 模块。
在 Python 中获取字符串的一部分
发布时间:2023/04/24 浏览次数:69 分类:Python
-
本文将研究如何在 Python 中获取字符串的一部分。 在某些情况下,我们需要在 Python 中获取原始字符串的某些字母或元素。