写点什么

如何在 Linux 系统上比较 Bash 脚本中的字符串?

作者:Ethereal
  • 2022 年 3 月 06 日
  • 本文字数:1163 字

    阅读完需:约 4 分钟

如何在Linux 系统上比较Bash 脚本中的字符串?

在 Bash 脚本中比较字符串的需求相对普遍,可用于在继续执行脚本的下一部分之前检查某些条件。


字符串可以是任何字符序列。要测试两个字符串是否相同,两个字符串必须包含完全相同的字符且顺序相同,它可以是一个词或整个句子,例如,string one 等于 string one 但不等于 string two。


在本教程中,我们将向您展示如何在 Linux 系统上比较 Bash 脚本中的字符串,我们将在一个简单的 if/else Bash 脚本的上下文中展示这一点,这样您就可以看到在开发脚本时测试这种情况是如何工作的。


在本教程中,您将学习:


  • 如何在 Bash 中比较字符串

  • 比较字符串的 if/else Bash 脚本示例

Bash 脚本:字符串比较示例

例 1

在 Bash 脚本中,您通常会将一个或两个字符串存储为变量,然后再进行比较。在此示例中,我们使用=运算符和 if 语句来确定两个字符串是否彼此相等。该 if 语句将继续其第一个子句或 else 原因,具体取决于字符串是否相等。


#!/bin/bash
string1="apples"string2="oranges"
if [ "$string1" = "$string2" ]; then echo "The two strings are equal."else echo "The two strings are not equal."fi
复制代码


这是我们执行脚本时的结果:


$ ./test.shThe two strings are not equal.
复制代码

例 2

我们还可以使用运算符来测试两个字符串是否不相等!=。


#!/bin/bash
string1="apples"string2="oranges"
if [ "$string1" != "$string2" ]; then echo "Strings are different."else echo "Strings are not different."fi
复制代码


这是我们执行脚本时的结果:


$ ./test.shStrings are different.
复制代码

例 3

我们可以与字符串一起使用的另一个运算符是-z,它允许我们测试字符串长度是否为 0。


#!/bin/bash
string=""
if [[ -z $string ]]; then echo "The string is empty."else echo "The string is not empty."fi
复制代码


这是我们执行脚本时的结果:


$ ./test.shStrings are different.
复制代码

例 4

-n 运算符还可用于测试字符串长度是否不为零。


#!/bin/bash
string="hello"
if [[ -n $string ]]; then echo "The string is not empty."else echo "The string is empty."fi
复制代码


这是我们执行脚本时的结果:


$ ./test.shStrings are different.
复制代码

例 5

我们还可以使用小于<和大于>运算符来检查一个字符串是否比另一个字符串多。


#!/bin/bash
string1="apples"string2="oranges"
if [[ "$string1" > "$string2" ]]; then echo "$string1 has more characters than $string2."else echo "$string2 has more characters than $string1."fi
复制代码


这是我们执行脚本时的结果:


$ ./test.shStrings are different.
复制代码

总结

在本教程中,我们了解了如何在 Bash 脚本中比较字符串,尤其是在 Bash 脚本的上下文中 if/else。当然,此功能可以扩展到更健壮的脚本,这些脚本可以读取用户的输入或使用 case 运算符等。这些都是在 Bash 中比较字符串所需的所有比较方法。

用户头像

Ethereal

关注

还未添加个人签名 2020.11.18 加入

还未添加个人简介

评论

发布
暂无评论
如何在Linux 系统上比较Bash 脚本中的字符串?_Ethereal_InfoQ写作平台