31

文字列がシェル スクリプト (#!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シェルスクリプトでどのように伝えますか?

Stringの構文と同様に、bashに含まれています

ただし、通常のシェル スクリプト (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 に答える