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

Ale*_*T82 17 linux string shell sh

我试图看看一个字符串是否是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"
Run Code Online (Sandbox Code Playgroud)

我正在寻找的结果是,我想知道"bla1"中存在"bla"的时间.

谢谢和亲切的问候,

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

以及String中的语法包含在bash中

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

救命?

gle*_*man 46

在bash中你可以写(注意星号在引号之外)

    if [[ $t1 == *"$t2"* ]]; then
            echo "$t1 and $t2 are equal"
    fi
Run Code Online (Sandbox Code Playgroud)

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

case "$t1" in
    *"$t2"*) echo t1 contains t2 ;;
    *) echo t1 does not contain t2 ;;
esac
Run Code Online (Sandbox Code Playgroud)

如果你专门针对linux,我会假设存在/ bin/bash.

  • 请注意,顺序很重要:百搭卡需要位于比较的右侧......至少根据我的经验。 (2认同)