bash で {{a,b}.{c,d}} が {ac}{ad}{bc}{bd} に拡張される理由

bash で {{a,b}.{c,d}} が {ac}{ad}{bc}{bd} に拡張される理由

Bashでは言及されていませんが、echo {{a,b}.{c,d}} 次に展開されます。{a.c} {a.d} {b.c} {b.d}支柱の拡張Bashのマニュアルで私が実行する入力の種類を学びます。

私の質問は、なぜ出力がこのようなものではないのですか?AC広告BC BD

ベストアンサー1

bash拡張は、単語に範囲()またはカンマが含まれていない場合{word}です。{word}..

あなたの場合は、word正確に2つの支柱の拡張があります。これは左から右に広がるため、最初に得られ、次に{a.{c,d}} {b.{c,d}}最終{a.c} {a.d} {b.c} {b.d}結果が得られます。

外部中括弧には範囲やカンマが含まれていないため、拡張されません。あなたは同様の結果を得るでしょう@{a,b}.{c,d}@

試してみると、{{a,b},{c,d}}3つの拡張が提供されます(3段階の拡張、各ステップはブラケットセットの拡張)。まず、外側の括弧をに展開し、左の{a,b} {c,d}括弧をに展開し、a b {c,d}最後にa b c dこれが最終結果です。

また見なさい:「cat{foo}」はfooを出力しませんが、「cat{foo,bar}」はなぜ出力されますか?

おすすめ記事