2つ未満の引数では中括弧拡張は機能しません。

2つ未満の引数では中括弧拡張は機能しません。

私は中括弧拡張が複数の引数に対して機能することを期待しています。ただし、n=1 の場合、次のような結果が得られます。

$ find models/nsf-projects-{7}*
models/nsf-projects-{7}.rdf

n> 1の場合、予想どおり拡張が発生します。たとえば、次のようになります。

$ find models/nsf-projects-{6,7}*
find: ‘models/nsf-projects-6*’: No such file or directory
find: ‘models/nsf-projects-7*’: No such file or directory

私はGNUのマニュアルを見ましたが、どこにも明示的に言及されている> 1引数の要件を見つけることができませんでした。

Q:n> 1は実際に校正器の拡張の要件ですか?では、なぜ役に立ちますか?

答え1

はい、n> 1は明示的な要件です。:

正しい形式の中括弧の拡張には、引用符のない開かっこと閉じ括弧、および引用符のない1つ以上のカンマまたは有効なシーケンス式を含める必要があります。誤って形成された中括弧の拡張は変更されません。

その理由はかなり歴史的です(たとえcsh他の動作がある元からコピーされていますが)。一部のコマンドは{}リテラル引数(findparallel、より複雑なパラメータを持つ他の項目)とその他の用途{}シェル言語で。中括弧拡張は文字通り(変数ではなく)作成された場合にのみ処理されるため、縮退拡張をサポートするインセンティブが実際にはなく、サポートしない理由がいくつかあります。

答え2

man bash状態(強調追加):

適切に設定された中かっこ拡張には、引用符のない開閉括弧を含める必要があります。引用符のないカンマは少なくとも1つ必要です。または有効なシーケンス式。誤って形成された中括弧の拡張は変更されません。

この記事の5番目の段落でもあります。サポート拡張bashのマニュアルセクション。

{...}動機についてのみ推測できますが、中括弧が消えずに埋め込まれたコンテンツを入力できるようにするためのものと考えられます。 (1つの例として、これは正規表現の反復演算子で動作します。)

関連情報