Em bash
, a expansão de {word}
é {word}
quando a palavra não contém um intervalo ( ..
) ou uma vírgula.
No seu caso, word
contém duas expansões de chave. Eles são expandidos da esquerda para a direita, de modo que você obtém, primeiro, {a.{c,d}} {b.{c,d}}
e, em seguida, {a.c} {a.d} {b.c} {b.d}
, que é o resultado final.
Observe que as chaves externas não são expandidas, pois não contêm um intervalo ou uma vírgula. Você obteria um resultado semelhante com @{a,b}.{c,d}@
.
Se você tivesse tentado {{a,b},{c,d}}
, teria três expansões (a expansão é feita em três etapas, cada uma expandindo um conjunto de chaves). Primeiro o externo em {a,b} {c,d}
e depois o esquerdo em a b {c,d}
, e finalmente a b c d
, que é o resultado final.
Veja também: Por que "cat {foo}" não gera foo, mas "cat {foo, bar}" faz?