在 bash 中
echo {{a,b}.{c,d}}
扩展为
{a.c} {a.d} {b.c} {b.d}
虽然没有提到大括号扩展在 bash 手册中了解我所做的输入类型
我的问题是为什么输出不是这样的AC 广告 BC BD
答案1
在 中bash
, 的扩展{word}
是{word}
当单词不包含范围 ( ..
) 或逗号时。
在你的情况下word
恰好包含两个大括号扩展。这些从左到右展开,因此您首先得到{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
,这是最终结果。