如何在 Bash 中比较字符串

2023-10-27

在编写 Bash 脚本时,您经常需要比较两个字符串以检查它们是否相等。当两个字符串具有相同的长度并且包含相同的字符序列时,它们相等。

本教程介绍如何在 Bash 中比较字符串。

比较运算符#

比较运算符是比较值并返回 true 或 false 的运算符。在 Bash 中比较字符串时,可以使用以下运算符:

  • string1 = string2 and string1 == string2 - The equality operator returns true if the operands are equal.
    • Use the =运算符与test [命令。
    • Use the ==运算符与[[模式匹配命令。
  • string1 != string2- 如果操作数不相等,则不等运算符返回 true。
  • string1 =~ regex- 如果左侧操作数与右侧的扩展正则表达式匹配,则正则表达式运算符返回 true。
  • string1 > string2- 如果左操作数大于按字典顺序(字母顺序)排序的右操作数,则大于运算符返回 true。
  • string1 < string2- 如果右操作数大于按字典顺序(字母顺序)排序的右操作数,则小于运算符返回 true。
  • -z string- 如果字符串长度为零,则为 True。
  • -n string- 如果字符串长度非零,则为 True。

比较字符串时需要注意以下几点:

  • 二元运算符和操作数之间必须使用空格。
  • 始终在变量名称周围使用双引号以避免任何分词或通配符问题。
  • Bash 不按“类型”分隔变量,变量根据上下文被视为整数或字符串。

检查两个字符串是否相等#

在大多数情况下,在比较字符串时,您需要检查字符串是否相等。

以下脚本使用if 语句和测试[命令检查字符串是否与=操作员:

#!/bin/bash

VAR1="Linuxize"
VAR2="Linuxize"

if [ "$VAR1" = "$VAR2" ]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

执行脚本时,它将打印以下输出。

Strings are equal.

这是另一个脚本,它获取用户的输入并比较给定的字符串。在此示例中,我们将使用[[命令和==操作员。

#!/bin/bash

read -p "Enter first string: " VAR1
read -p "Enter second string: " VAR2

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

运行脚本并在出现提示时输入字符串:

Enter first string: Linuxize
Enter second string: Ubuntu
Strings are not equal.

您还可以使用逻辑和&& and or ||比较字符串:

[[ "string1" == "string2" ]] && echo "Equal" || echo "Not equal"
Not equal

检查字符串是否包含子字符串#

有多种方法可以检查字符串是否包含子字符串。

一种方法是使用星号符号包围子字符串*这意味着匹配所有字符。

#!/bin/bash

VAR='GNU/Linux is an operating system'
if [[ $VAR == *"Linux"* ]]; then
  echo "It's there."
fi

该脚本将echo下列:

It's there.

另一种选择是使用正则表达式运算符=~如下所示:

#!/bin/bash

VAR='GNU/Linux is an operating system'
if [[ $VAR =~ .*Linux.* ]]; then
  echo "It's there."
fi

句点后跟星号.*匹配除换行符之外的任何字符零次或多次出现。

检查字符串是否为空#

很多时候,您还需要检查变量是否为空字符串。您可以使用-n and -z运营商。

#!/bin/bash

VAR=''
if [[ -z $VAR ]]; then
  echo "String is empty."
fi
String is empty.
#!/bin/bash

VAR='Linuxize'
if [[ -n $VAR ]]; then
  echo "String is not empty."
fi
String is not empty.

使用 Case 运算符比较字符串#

除了使用测试运算符之外,您还可以使用案例陈述比较字符串:

#!/bin/bash

VAR="Arch Linux"

case $VAR in

  "Arch Linux")
    echo -n "Linuxize matched"
    ;;

  Fedora | CentOS)
    echo -n "Red Hat"
    ;;
esac
Linuxize matched.

词典比较#

词典比较是通过从左到右顺序比较字符串中的字符来按字母顺序比较两个字符串的操作。这种比较很少使用。

以下脚本按字典顺序比较两个字符串:

#!/bin/bash

VAR1="Linuxize"
VAR2="Ubuntu"

if [[ "$VAR1" > "$VAR2" ]]; then
    echo "${VAR1} is lexicographically greater then ${VAR2}."
elif [[ "$VAR1" < "$VAR2" ]]; then
    echo "${VAR2} is lexicographically greater than ${VAR1}."
else
    echo "Strings are equal"
fi

该脚本将输出以下内容:

Ubuntu is lexicographically greater than Linuxize.

结论#

比较字符串是 Bash 脚本中最基本、最常用的操作之一。阅读本教程后,您应该很好地了解如何在 Bash 中比较字符串。您还可以查看我们的指南字符串连接 .

如果您有任何问题或反馈,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Bash 中比较字符串 的相关文章

随机推荐

  • 渗透测试岗面试题汇总

    有些是网上整理的渗透测试岗 试问题 有些 HW 试的题 已经收集好了 提供给 家 现在就是毕业季节 希望各位都能找到好 作 还有一部分是根据回忆总结的 部分问题可能描述的有些问题 安全的体系很大 这些只是冰山一角而已 感兴趣的同学可以点击我
  • 如何在 Python 中验证电子邮件地址(使用正则表达式)

    验证电子邮件地址是确保您的应用程序仅接受格式正确的电子邮件地址的关键步骤 格式正确的电子邮件地址不仅可以确保正确的通信 还有助于防止垃圾邮件和安全风险 在本文中 我们将探讨如何在 Python 中使用正则表达式 regex 验证电子邮件地址
  • 每天凌晨 2:00 运行 Cron 作业

    Cron 作业 或 cron 作业 是告诉计算机在指定时间自动运行程序或执行命令的计划 这称为 cron 作业 是一个在后台运行并按计划执行任务的守护进程 Cron 是一个在后台运行并定期执行程序或任务的进程 从设计上来说 cron 非常灵
  • 如何在 CentOS 和 RedHat 上使用 MySQL 设置 Pure-FTPD

    纯FTPd是一个免费且安全的 FTP 服务器 它不提供无用的花哨功能 而是注重效率和易用性 它为常见需求提供简单的答案 并为个人用户和托管提供商提供独特的有用功能 本指南将帮助您使用 MySQL 作为用户数据库来设置 Pure FTPD 还
  • 什么是暴力攻击?以及企业的缓解策略

    在不断发展的网络安全世界中 了解各种类型的威胁是保护您自己或您的企业的第一步 一种常见但重大的威胁是暴力攻击 让我们深入了解什么是暴力攻击 它的工作原理及其影响 什么是暴力攻击 暴力攻击是一种试错法用于获取个人识别码 PIN 用户名 密码或
  • 全球连通性如何塑造现代娱乐

    20世纪50年代 几十年来被视为电视的黄金时代 人们没有想到电视剧的复兴 并迎来了另一个受欢迎的高峰 说实话 仅在十年前这似乎也是不可能的 然而如今 从挪威到印度尼西亚 每个人都有自己最喜欢的连续剧和电视节目列表 并且他们在全球范围内关注相
  • 如何在 CentOS/RHEL 8 上安装 Tomcat 9

    Apache Tomcat 9 是可用于安装 Tomcat Web 服务器的最新版本 Tomcat 是由 Apache 基金会开发的用于基于 Java 的应用程序的开源 Web 服务器 我们使用 Tomcat 来部署 Java Servle
  • 如何在 Apache 中启用缓存

    缓存是增强 Web 服务器性能的一个重要方面 因为它可以通过存储和提供频繁请求的数据来显着缩短响应时间 这不仅提高了网站的速度 还减少了服务器的负载 本文将引导您完成在 Apache HTTP Server 一种流行且强大的开源 Web 服
  • 如何在 CentOS 8 上使用 Apache 安装 phpMyAdmin

    当前的 phpMyAdmin 版本与 PHP 7 1 及更高版本以及 MySQL 5 5 及更高版本兼容 本教程将帮助您在 CentOS 8 Linux 系统上安装和配置 phpMyAdmin 第 1 步 先决条件 我们假设您已经安装了Ce
  • 如何在 Fedora 上安装 phpMyAdmin

    phpMyAdmin是一个流行的基于 Web 的客户端 用于管理 MySQL 服务器 phpMyAdmin 是用 PHP 编程语言编写的 它提供了一个用户友好的 Web 界面来访问和管理 MySQL 服务器和数据库 它允许您创建数据库和用户
  • 如何在 Ubuntu 上安装最新的 Node.js

    如果您一直在探索前端和 JavaScript 的世界 您可能已经遇到过 Node js 它是一个服务器端框架 使用 Google 的 V8 引擎来执行 JavaScript 代码 开发人员可以使用 Node js 因为它为他们提供了一种使用
  • 如何在 Windows 上安装 NVM

    NVM 节点版本管理器 是用于在系统上安装 Node js 的命令行实用程序 它允许我们安装多个 Node js 版本并在它们之间切换 这对于运行需要不同 2 个节点版本的多个节点应用程序的系统很有帮助 本教程将帮助您使用 NVM 在 Wi
  • 如何在 Linux Mint 上安装 Apache Solr 21/20

    Apache Solr 是一个基于 Java 构建的强大的开源搜索平台 它广泛用于索引 搜索和分析大量文本内容 在 Linux Mint 上安装它非常简单 在本指南中 我们将逐步完成在 Linux Mint 21 20 或 19 上安装并运
  • 如何在 Ubuntu 20.04 上安装 Nagios

    Nagios 是一个流行的开源监控系统 Nagios 保留整个 IT 基础设施的清单 并确保您的网络 服务器 应用程序 服务和流程正常运行 如果发生故障或性能不佳 Nagios 将通过各种方法发送通知警报 本文介绍如何在 Ubuntu 20
  • 如何在 Ubuntu 20.04 上设置或更改时区

    使用正确的时区对于许多与系统相关的任务和流程至关重要 例如 cron 守护进程使用系统的时区来执行 cron 作业 并且日志文件中的时间戳基于同一系统的时区 在 Ubuntu 上 系统的时区是在安装过程中设置的 但以后可以轻松更改 本文介绍
  • Linux 中的粘贴命令(合并行)

    paste是一个允许您水平合并文件行的命令 它输出由指定为参数的每个文件的顺序对应行组成的行 并用制表符分隔 在本教程中 我们将解释如何使用paste命令 如何使用paste命令 paste是鲜为人知且较少使用的 Linux 和 Unix
  • 如何在 CentOS 7 上安装 Memcached

    Memcached 是一个免费开源的高性能内存键值数据存储 它主要用作缓存系统 通过缓存数据库调用结果中的各种对象来加速应用程序 在本教程中 我们将解释如何在 CentOS 7 上安装和配置 Memcached 先决条件 在继续本教程之前
  • 如何在 Ubuntu 18.04 上安装 Apache Maven

    Apache Maven 是一个免费的开源项目管理和理解工具 主要用于 Java 项目 Maven 使用项目对象模型 POM 它本质上是一个 XML 文件 其中包含有关项目 配置详细信息 项目依赖项等的信息 在本教程中 我们将向您展示在 U
  • 如何在 Ubuntu 18.04 上安装和使用 Wine

    Wine 是一个开源兼容层 允许您在类 Unix 操作系统 例如 Linux FreeBSD 和 macOS 上运行 Windows 应用程序 Wine代表 Wine 不是模拟器 它是一个将 Windows 系统调用转换为 Linux 和其
  • 如何在 Bash 中比较字符串

    在编写 Bash 脚本时 您经常需要比较两个字符串以检查它们是否相等 当两个字符串具有相同的长度并且包含相同的字符序列时 它们相等 本教程介绍如何在 Bash 中比较字符串 比较运算符 比较运算符是比较值并返回 true 或 false 的