Como sempre, a resposta está na citação.
echo -n $TEST > text
Isso será expandido para:
echo -n test > text
Observe os dois espaços após test
. Os únicos argumentos echo
são -n
e test
. Nada mais. O espaço se perde aqui. Para mantê-lo, você precisa cotar duas vezes $TEST
:
echo -n "$TEST" > text
Veja também: Citações e escapando no wiki do Bash Hackers.