Bash
{,string} 語法如何工作?
我很難理解
{,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