En bash
, la expansión de {word}
es {word}
cuando la palabra no contiene un rango(..
)o una coma.
En su caso, word
contiene dos expansiones de llaves. Estos se expanden de izquierda a derecha, por lo que obtienes, primero {a.{c,d}} {b.{c,d}}
y luego {a.c} {a.d} {b.c} {b.d}
, que es el resultado final.
Tenga en cuenta que las llaves exteriores no se expanden ya que no contienen un rango o una coma. Obtendría un resultado similar con @{a,b}.{c,d}@
.
Si lo hubiera intentado {{a,b},{c,d}}
, tendría tres expansiones (, la expansión se realiza en tres pasos, cada uno de los cuales expande un conjunto de llaves ). Primero el exterior en {a,b} {c,d}
y luego el izquierdo en a b {c,d}
, y finalmente a b c d
, que es el resultado final.
Ver también:¿Por qué "cat {foo}" no genera foo, pero "cat {foo,bar}" sí?