Neo_Returns Asked: 2018-05-20 07:25:34 +0800 CST2018-05-20 07:25:34 +0800 CST 2018-05-20 07:25:34 +0800 CST 为什么在 bash {{a,b}.{c,d}} 中扩展为 {ac} {ad} {bc} {bd} 772 在 bash echo {{a,b}.{c,d}} 中扩展为 {a.c} {a.d} {b.c} {b.d} 虽然在 bash 手册中没有提到我所做的输入类型的大括号扩展 我的问题是为什么输出不像这样ac ad bc bd bash brace-expansion 1 个回答 Voted Best Answer Kusalananda 2018-05-20T08:13:43+08:002018-05-20T08:13:43+08:00 在bash, 的扩展{word}是{word}当单词不包含范围 ( ..) 或逗号时。 在您的情况下word,恰好包含两个大括号扩展。这些从左到右展开,所以你得到, first {a.{c,d}} {b.{c,d}},然后{a.c} {a.d} {b.c} {b.d}是最终结果。 请注意,外部大括号没有扩展,因为它们不包含范围或逗号。你会得到类似的结果@{a,b}.{c,d}@。 如果您尝试过{{a,b},{c,d}},您将进行三个扩展(扩展分三个步骤完成,每个步骤扩展一组大括号)。先是外层的进入{a,b} {c,d},然后是左的进入a b {c,d},最后a b c d是最终的结果。 另请参阅:为什么“cat {foo}”不输出 foo,但“cat {foo,bar}”会输出?
在
bash
, 的扩展{word}
是{word}
当单词不包含范围 (..
) 或逗号时。在您的情况下
word
,恰好包含两个大括号扩展。这些从左到右展开,所以你得到, first{a.{c,d}} {b.{c,d}}
,然后{a.c} {a.d} {b.c} {b.d}
是最终结果。请注意,外部大括号没有扩展,因为它们不包含范围或逗号。你会得到类似的结果
@{a,b}.{c,d}@
。如果您尝试过
{{a,b},{c,d}}
,您将进行三个扩展(扩展分三个步骤完成,每个步骤扩展一组大括号)。先是外层的进入{a,b} {c,d}
,然后是左的进入a b {c,d}
,最后a b c d
是最终的结果。另请参阅:为什么“cat {foo}”不输出 foo,但“cat {foo,bar}”会输出?