Linux 系统的 Shell 脚本中检查字符串是否包含子字符串

参考地址:https://linux265.com/news/3780.html

在 Linux 系统 Shell 脚本使用字符串时经常遇到的操作之一就是确定字符串是否包含另一个字符串。

在本文中,我们将向您展示如何在 Linux系统的 Shell 脚本中检查字符串是否包含子字符串的几种方法。

01、使用通配符

最简单的方法是用星号通配符(星号)*包围子字符串,并将其与字符串进行比较。 通配符是用于表示零个,一个或多个字符的符号。

如果测试返回true,则子字符串包含在字符串中。

在下面的示例中,我们使用if语句和相等运算符(==)来检查字符串 STR 中是否找到子字符串 SUB

#!/bin/bash

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

执行时脚本将输出:

It's there.

02、使用case运算符

您也可以使用case语句来检查字符串是否包含另一个字符串,而不是使用if语句。

#!/bin/bash

STR='GNU/Linux is an operating system'
SUB='Linux'

case $STR in

  *"$SUB"*)
    echo -n "It's there."
    ;;
esac

03、使用正则表达式运算符

确定指定子字符串是否出现在字符串中的另一个选项是使用正则表达式运算符=~。 使用此运算符时,右字符串被视为正则表达式。

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

#!/bin/bash

STR='GNU/Linux is an operating system'
SUB='Linux'

if [[ "$STR" =~ .*"$SUB".* ]]; then
  echo "It's there."
fi

脚本将输出如下内容:

It's there.

04、使用 Grep

grep 命令也可用于查找另一个字符串中的字符串。

在下面的示例中,我们将字符串$STR作为输入传递给grep,并检查输入字符串中是否找到字符串$SUB。 该命令将根据需要返回truefalse

#!/bin/bash

STR='GNU/Linux is an operating system'
SUB='Linux'

if grep -q "$SUB" <<< "$STR"; then
  echo "It's there"
fi

-q 选项表示 grep 省略输出。

写在最后

检查字符串是否包含子字符串是 Linux 系统 shell 脚本中最基本和最常用的操作之一。

阅读本教程后,您应该很好地理解如何测试字符串是否包含另一个字符串。 您还可以使用其他命令(如awksed)进行测试。

posted @ 2022-05-19 10:21  嘻嘻哈哈的人生  阅读(1192)  评论(0编辑  收藏  举报