O que significa diferença com chaves?

O que significa diferença com chaves?
for i in $(find template -type f | sed 's/^template//') ; do
    diff -wBNu {,./template}$i

Eu posso entender o loop for que percorrerá todos os arquivos no templatediretório e, em seguida, substituirá todas as frases começando com template por ''. Esse entendimento está correto? O que isso difffaz aqui?

Responder1

As chaves executam a 'expansão das chaves' do shell. A construção {,./template}$i produz um par de palavras, ambas contendo o valor de $i, mas a última tem ./template prefixado. Experimente o comando

echo foo{,bar}

no prompt do shell para vê-lo em ação. Isso está documentado em "Expansão de chaves" no manual do bash.

informação relacionada