/usr/bin/bash: Difference between revisions

Line 804: Line 804:
特殊パターン文字は以下の意味を持つ:
特殊パターン文字は以下の意味を持つ:


;*    
;<nowiki>*</nowiki>
:NULL文字列を含む任意の文字列にマッチする。 globstarシェル・オプションが有効で、*がパス名展開コンテキストで使用されている場合、隣接する2つの*を1つのパターンとして使用すると、すべてのファイルと0個以上のディレクトリおよびサブディレクトリにマッチする。 の後に / が続く場合、隣接する2つの * はディレクトリとサブディレクトリにのみマッチする。
:NULL文字列を含む任意の文字列にマッチする。 globstarシェル・オプションが有効で、*がパス名展開コンテキストで使用されている場合、隣接する2つの*を1つのパターンとして使用すると、すべてのファイルと0個以上のディレクトリおよびサブディレクトリにマッチする。 の後に / が続く場合、隣接する2つの * はディレクトリとサブディレクトリにのみマッチする。
;?
;?
Line 819: Line 819:
shopt 組み込み関数で extglob シェルオプションを有効にすると、いくつかの拡張パターンマッチング演算子が認識される。 以下の説明では、pattern-listは|で区切られた1つ以上のパターンのリストである。 複合パターンは、以下のサブパターンの1つ以上を使用して形成することができる:
shopt 組み込み関数で extglob シェルオプションを有効にすると、いくつかの拡張パターンマッチング演算子が認識される。 以下の説明では、pattern-listは|で区切られた1つ以上のパターンのリストである。 複合パターンは、以下のサブパターンの1つ以上を使用して形成することができる:


;?(pattern-list)
;;?(pattern-list)
:与えられたパターンの0個または1個にマッチする
::与えられたパターンの0個または1個にマッチする
;*(pattern-list)
;;<nowikI>*</nowiki>(pattern-list)
:与えられたパターンの0回以上の出現にマッチする
::与えられたパターンの0回以上の出現にマッチする
;+(pattern-list)
;;+(pattern-list)
:与えられたパターンの1つ以上の出現にマッチする
::与えられたパターンの1つ以上の出現にマッチする
;@(pattern-list)
;;@(pattern-list)
:与えられたパターンのいずれかにマッチする
::与えられたパターンのいずれかにマッチする
;!(pattern-list)
;;!(pattern-list)
:与えられたパターンの1つ以外とマッチする
::与えられたパターンの1つ以外とマッチする


長い文字列に対する複雑な拡張パターンマッチングは、特にパターンが交替を含み、文字列が複数のマッチを含む場合、時間がかかる。 短い文字列に対して別々のマッチを使うか、1つの長い文字列の代わりに文字列の配列を使う方が速いかもしれない。
長い文字列に対する複雑な拡張パターンマッチングは、特にパターンが交替を含み、文字列が複数のマッチを含む場合、時間がかかる。 短い文字列に対して別々のマッチを使うか、1つの長い文字列の代わりに文字列の配列を使う方が速いかもしれない。