y
will have the stringhello hi world
Não, não vai. Expansões em atribuições de variáveis não estão sujeitas a divisão de palavras ou globalização de nomes de arquivos. (Em certo sentido, eles sempre agem como se estivessem citando duas vezes.) Veja: Quando é cotação dupla é necessária?
$ IFS=,
$ x="hello,hi,world"; y=$x
$ echo "$y"
hello,hi,world
I assume that I got this error because the statement
if [ $x = "hello hi world" ]
was replaced byif [ hello hi world = "hello hi world" ]
Sim, mais ou menos. Não é uma substituição baseada em texto, mas como $x
não foi citado aqui, ela passa pela divisão de palavras e o comando [
vê seis argumentos distintos ( hello
, hi
, world
, =
, hello hi world
e ]
), não os quatro esperados.