当前位置: 首页 > 面试题库 >

Linux Shell脚本-带通配符的字符串比较

通飞尘
2023-03-14
问题内容

我正在尝试查看一个字符串是否是Shell脚本(#!bin / sh)中另一个字符串的一部分。

我现在的代码是:

#!/bin/sh
#Test scriptje to test string comparison!

testFoo () {
        t1=$1
        t2=$2
        echo "t1: $t1 t2: $t2"
        if [ $t1 == "*$t2*" ]; then
                echo "$t1 and $t2 are equal"
        fi
}

testFoo "bla1" "bla"

我要寻找的结果是,我想知道“ bla1”中何时存在“ bla”。

谢谢和亲切的问候,

帮帮我?


问题答案:

在bash中,您可以编写(注意星号在引号 之外

    if [[ $t1 == *"$t2"* ]]; then
            echo "$t1 and $t2 are equal"
    fi

对于/ bin / sh,=运算符仅用于相等性,不适用于模式匹配。您可以使用case,虽然

case "$t1" in
    *"$t2"*) echo t1 contains t2 ;;
    *) echo t1 does not contain t2 ;;
esac

如果您专门针对Linux,则假定存在/ bin / bash。



 类似资料:
  • 在字符串比较中使用通配符 内含的模式匹配为字符串比较提供了一个多用途工具。下表显示了你可以通过 Like 运算符 使用的通配符和它们匹配的数字或字符串的数目。 在样式中的字符 在表达式中的匹配 ? _(下划线) 任何单一字符 * or % 零个或多个字符 # 任何单一数字(0 — 9) [charlist] 任何在字符表中的单一字符 [!charlist] 任何不在字符表中的单一字符 可用括在括号

  • 我正在尝试比较这样的字符串: 因为我需要转义通配符,例如 问题: 有没有任何powershell函数可以忽略通配符/regex查找子字符串? 非常感谢。

  • 这里有2个测量: 正如您所见,比较两个匹配的字符串比比较两个大小相同但不匹配的字符串要快。这是非常令人不安的:在字符串比较期间,我认为python是逐字符测试字符串的,所以应该比更长,因为它需要对1进行4次测试才能进行不匹配的比较。可能比较是基于哈希的,但在这种情况下,两种比较的计时应该相同。 你知道为什么吗?

  • 比如说我有这个: 我想做两件事: 1) 使其成为当且仅当用户准确键入<代码>时!测试和其他内容,它将在通道中打印出测试 2)使其成为如果用户键入首先后跟空格和至少一个其他字符串字符,它将打印出——例如:a)不会打印出任何东西,b)(后跟一个空格)不会打印出任何东西,c)不会打印出任何东西,d)不会打印出任何东西,但是e)将打印出, f)将打印出, g)将打印出, and h)将打印出等。 我只知道

  • 问题 你想使用 Unix Shell 中常用的通配符(比如 *.py , Dat[0-9]*.csv 等)去匹配文本字符串 解决方案 fnmatch 模块提供了两个函数—— fnmatch() 和 fnmatchcase() ,可以用来实现这样的匹配。用法如下: >>> from fnmatch import fnmatch, fnmatchcase >>> fnmatch('foo.txt',

  • 问题内容: 可以说我有一个清单 如何让用户进行通配符搜索? 搜索词:“ th_s” 将返回“ this” 问题答案: 正则表达式可能是解决此问题的最简单方法: