パターンマッチングは、Bashの複数の場所で使用されます。
Bashのパターンマッチングは、正規表現またはワイルドカード(ファイル名拡張と同じスタイル)を使用して行われますか?
[[..]]
Bashでは、パターンマッチングはwith演算子に対してのみ正規表現で行われますか=~
?他の場所では使用できませんか?正規表現でパターンマッチングを実行できる他の場所はありますか?
答え1
からman bash
:
==および!=演算子を使用すると、演算子の右側の文字列はパターンとして扱われ、extglobシェルオプションが有効になっているかのように、パターンの一致で説明されている規則に従って一致します。
のため=~
:
==と!=と同じ優先順位を持つ追加の2項演算子=~を使用することもできます。使用すると、演算子の右側の文字列は拡張正規表現として扱われ、それに応じて一致します(regex(3)と同様)。
したがってregex(3)
、次の場合にのみパターンを一致させるために使用されます。=~
それ以外の場合は、次のようにしてください。
パス名拡張:
単語分割後のbashは、-fオプションが設定されていない限り、各単語で*、?と[文字を検索します。これらの文字のいずれかが発生すると、その単語はパターンとして扱われ、パターンと一致するファイル名のアルファベット順のリストに置き換えられます(下記のパターン一致を参照)。
以下に説明する特殊パターン文字を除いて、パターンに表示されるすべての文字はそれ自体が一致します。 NUL 文字はパターンには現れません。バックスラッシュは次の文字をエスケープします。エスケープされたバックスラッシュは一致時に削除されます。特殊パターン文字を文字通り一致させるには、引用符で囲む必要があります。
また、訪問外部グローバル変数複数のパターン一致演算子を拡張します。