ifブロックのパターンマッチング

ifブロックのパターンマッチング

ifブロックを介して変数に格納されているパターンを一致させようとしています。私の理解によると、これは一致しなければならず、「一致」エコードアを受け取るべきです。しかし、一致しないようです。

patern=EOD*psv
file=EOD_test_20160404.psv

if [[ $file == *"$patern" ]]
then
    echo "Match";
else
    echo "No Match";
fi

出力:

一致しない

file変数の値が指定されたパターンと一致しないのはなぜですか?

答え1

'=='および '!='演算子を使用すると、演算子の右側の文字列はパターンとして扱われ、以下に説明する規則に従って一致します。パターンマッチング

したがって、パターンに二重引用符を含めると、bashはファイル名でそれを見ることを期待します。二重引用符や先行を削除すると*問題が解決します。

if [[ $file == $patern ]]
then
    echo "Match";
else
    echo "No Match";
fi

関連情報