Bash

{,string} 語法如何工作?

  • March 28, 2021

我很難理解{,string}語法。我主要用它來重命名文件,mv test{,.original}但我不太明白:

echo asdf{,.fdsa}

輸出:

asdf asdf.fdsa

echo asdf{asdf,.fdsa}

輸出:

asdfasdf asdf.fdsa

我試圖通讀這個,我發現了一些與#or?但現在與,. 它的想法是應該找到模式,但我不認為這就是它的作用。

它是如何工作的?

這是大括號擴展。在Bash 手冊中閱讀更多關於它的資訊。

它從大括號中的逗號分隔列表中產生每種可能性。

echo asdf{asdf,.fdsa}
asdfasdf asdf.fdsa
  • echo只是呼應它之後的內容(不是在每種情況下,但為了簡單起見,在這個例子中)
  • asdf{asdf,.fdsa}擴展為兩種可能性(因為只有一個,符號,所以它將列表分成兩部分)。首先,我們得到了asdf不變的部分,然後將它與另一個asdf(大括號列表中的第一項)asdf連接,然後是空格和另一個與.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

引用自:https://unix.stackexchange.com/questions/641047