Na documentação do comando [[
, você veja
Word splitting and filename expansion are not performed on the words between the [[ and ]]; tilde expansion, parameter and variable expansion, arithmetic expansion, command substitution, process substitution, and quote removal are performed.
(ênfase minha)
Além disso, a case
declaração tem isenções
The word undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before matching is attempted. Each pattern undergoes tilde expansion, parameter expansion, command substitution, and arithmetic expansion.
Notáveis por sua ausência são a divisão de palavras e a expansão de nomes de arquivos.
Além disso, a atribuição de variáveis (consulte Parâmetros da shell )
A variable may be assigned to by a statement of the form
name=[value]
Se valor não for fornecido, a variável será atribuída à cadeia nula. Todos os valores passam por expansão de til, expansão de parâmetro e variável, substituição de comando, expansão aritmética e remoção de cotação
Então, isso é seguro:
a="hello world"
b=$a
Outros locais onde a divisão de palavras não é realizada:
Meu truque: pesquise a palavra "sofrer" no manual do bash.