Há uma pequena diferença entre a string no título da pergunta e a string na pergunta em si. Ou seja, o último está entre aspas, o que está no título não é.
Fora , as chaves {...}
expand para a cadeia ao lado das chaves concatenadas a todas as cadeias separadas por vírgula dentro das chaves. Ou seja, string{this,that}
expande para stringthis
e stringthat
, evitando que você repita a parte comum.
A nomeação de nomes de arquivo aconteceria depois disso, então algo como dir/{0[7-9],1*,2*}
expandiria para dir/0[7-9]
, dir/1*
e dir/2*
, todos os quais seriam então expandidos para nomes de arquivos correspondentes.
Se os nomes dos arquivos forem dias do mês em números de dois dígitos, eles corresponderão aos números 07 a 29. (mas não 30 ou 31!)
O conjunto externo de chaves no exemplo seria expandido de forma semelhante.
Por dentro aspas, as chaves não são nada de especial, e nem a expansão do nome do arquivo é feita, então tudo o que é expandido são as variáveis.
Isso no Bash e outros shells que possuem expansão de chaves, não é um recurso do POSIX sh.