关于Linux Shell脚本:Linux Shell脚本 – 字符串与通配符的比较

Linux Shell Script - String Comparison with wildcards

我正在尝试查看一个字符串是否是shell脚本中另一个字符串的一部分()!BI/SH)。

我现在的代码是:

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/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"。

谢谢,谨致问候,

更新:我尝试了这里描述的"contains"函数:如何在UnixShell脚本中判断一个字符串是否包含另一个字符串?

以及bash中字符串包含的语法

但是,它们似乎与普通shell脚本(bin/sh)不兼容…

帮助?


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

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

对于/bin/sh,=运算符仅用于相等,不用于模式匹配。不过,您可以使用EDOCX1[1]

1
2
3
4
case"$t1" in
    *"$t2"*) echo t1 contains t2 ;;
    *) echo t1 does not contain t2 ;;
esac

如果您专门针对Linux,那么我假设存在/bin/bash。