Se o valor de $FOO
for uma única palavra que não contenha um caractere curinga \[*?
, os dois serão idênticos.
Se $FOO
não estiver atribuído ou estiver vazio ou se houver mais de uma palavra (ou seja, contiver espaço em branco ou $IFS
), a versão sem aspas será um erro de sintaxe. Se acontecer de ser apenas a seqüência correta de palavras (como 0 -eq 0 -o false
), o resultado pode ser arbitrário. Portanto, é uma boa prática sempre citar variáveis em scripts de shell.
Por acaso, "true"
não precisa ser citado.