echo -e "\t"
passa \t para echo porque a barra invertida é especial entre aspas duplas em bash . Ele serve como um operador escapando (citando). Em \ , ele escapa sozinho.
Você pode fazer:
echo -e "\\t"
para echo ser passado \t ( echo -e "\\t" também seria), ou você poderia usar aspas simples nas quais \ não é especial:
echo -e '\t'
Agora, echo é um comando muito pouco suportável . Mesmo em bash , seu comportamento pode depender do ambiente. Eu aconselharia evitá-lo e usar printf , com o qual você pode fazer:
printf 'test\n\test\n'
Ou até mesmo decidir quais partes passam por essas expansões de seqüência de escape:
printf 'test\n%s\n' '\test'
Ou:
printf '%b%s\n' 'test\n' '\test'
%b entende as mesmas seqüências de escape que echo (alguns echo s), enquanto o primeiro argumento para printf , o formato, também entende seqüências, mas de maneira ligeiramente diferente de echo ( mais parecido com o que é feito em outros idiomas). Em qualquer caso, \n é entendido por ambos.