0

そのため、現在Bashスクリプトを使用していますが、パターンマッチングとファイル名拡張の違いについて少し混乱しています。

Bashリファレンスマニュアルには次のように書かれています。

単語分割後、-f' option has been set (see section 4.3.1 The Set Builtin), Bash scans each word for the characters*'、?', and['を除きます。これらの文字のいずれかが表示された場合、その単語はパターンと見なされ、パターンに一致するファイル名のアルファベット順にソートされたリストに置き換えられます。

これは私にとって、次のことはおそらく私たちが望むことをしてはいけないことを示唆しています:

if [[ $a == [cb]at* ]] ; then ...

この場合、上記の引用が示唆するように、 catまたはbat[cb]at*で始まるファイルのリストには拡張されませんが、非常に限定された正規表現のように機能します。なんで?文字*?[は、現在のディレクトリ内の一致するファイルに展開されるのではなく、正規表現のように機能するのはいつですか?

4

1 に答える 1

0

bash内のトークンを[[ ... ]]異なる方法で解釈します。特徴です。

于 2012-06-14T04:34:28.730 に答える