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