31

我正在尝试查看一个字符串是否是 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”。

谢谢和亲切的问候,

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

以及String 中的语法包含在 bash

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

帮助?

4

1 回答 1

71

使用==!=在 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。

于 2013-11-11T00:37:03.827 回答