一尘不染

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

linux

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

谢谢和亲切的问候,

帮帮我?


阅读 874

收藏
2020-06-07

共1个答案

一尘不染

在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。

2020-06-07