$ echo {file1,file2}:{A,B,C}
file1:A file1:B file1:C file2:A file2:B file2:C
原始命令:echo {file1,file2}:{A,B,C}
第 1 步:展開第一組 {file1,file2}
→ echo file1:{A,B,C} file2:{A,B,C}
第 2 步:展開第二組 {A,B,C} (對每個前綴)
→ echo file1:A file1:B file1:C file2:A file2:B file2:C
第 3 步:echo 打印所有參數 (空格分隔)
→ file1:A file1:B file1:C file2:A file2:B file2:C
| 語法 | 展開結果 | 說明 |
|---|---|---|
| `{1..5}` | `1 2 3 4 5` | 數字序列 (Bash 3.0+) |
| `{a..e}` | `a b c d e` | 字母序列 |
| `{01..10}` | `01 02 ... 10` | 零填充寬度自動推斷 |
| `{1..10..2}` | `1 3 5 7 9` | 步長 (Bash 4.0+) |
| `file_{1..3}.txt` | `file_1.txt file_2.txt file_3.txt` | 前綴/後綴擴展 |
| `{{A,B},{C,D}}` | `A B C D` | 嵌套展開 (扁平化) |
| `cp file.txt file.txt.{bak,orig}` | `cp file.txt file.txt.bak file.txt.orig` | 實戰:備份文件 |
「這是一個 json 片段,輸出的時候會得到笛卡爾積。也就是第一個集合每個元素匹配第二個集合的的每個元素。」—— 雖稱其為 JSON 片段不準確 (實為 Bash 語法),但精準說明了笛卡爾積本質。