{,string} 構文はどのように機能しますか?

{,string} 構文はどのように機能しますか?

{,string}構文を理解するのが難しいです。私は主に次のファイル名を変更するために使用しますmv test{,.original}が、よく理解していません。

echo asdf{,.fdsa}

出力:

asdf asdf.fdsa

しかし、

echo asdf{asdf,.fdsa}

出力:

asdfasdf asdf.fdsa

私はずっと読んでみてください。これ#私はorを使って似たようなパターンを見つけまし?たが、今はを使って,パターンを見つける必要があると思いますが、それが行われることではないと思います。

どのように動作しますか?

答え1

支柱の拡張です。ここで詳細を読んでください。バッシュマニュアル

中カッコ内のカンマ区切りリストから各可能性を生成します。

echo asdf{asdf,.fdsa}
asdfasdf asdf.fdsa
  • echo次の内容をそのまま反映してください(すべての場合ではありませんが、単純化のためにこの例では)。
  • asdf{asdf,.fdsa}2つの可能性に拡張されます(記号があるため、,リストを2つの部分に分割します)。まずasdf、変更されていない部分を取得し、asdfそれを別の部分(中括弧リストの最初の項目)に関連付け、次にスペースを使用してasdf他の部分(リストの2番目の項目)に関連付けます。.fdsa

同じ文字列をプレフィックスと中かっこ内で使用すると少し混乱する可能性があるため、より明確にするために次のことを試してみましょう。

$ echo a{,b,.c,def}gh
agh abgh a.cgh adefgh

これは次のように翻訳されます。

  • a+空の文字列 + gh=agh
  • a+ b+ gh=abgh
  • a+ .c+ gh=a.cgh
  • a+ def+ gh=adefgh

関連情報