As chaves são usadas para expansão de parâmetro ( ${foo%123}
), expansão de contraventamento em formas alternativas ( {foo,bar}
) ou de sequência ( {1..25}
) ou em blocos de código ( { foo ; bar ; }
).
Os colchetes são usados como comparação de comandos ( [ "$foo" -lt 3 ]
, [[ $bar =~ ^123 ]]
), como uma classe de intervalo ou caractere em uma glob ( ba[rz]
, foo[[:alnum:]]
, qu[[=u=]]x
), como parte de uma atribuição de matriz ( foo=([2]=3 4 5)
, foo[42]=bar
) ou na expansão de parâmetro ao lidar com uma matriz ( ${foo[@]}
).
Em outras palavras, elas são completamente diferentes.