O histórico misto de echo
significa que sua operação padrão varia de shell para shell. POSIX especifica que o resultado de echo
é "implementado-definido" se o primeiro argumento for -n
ou qualquer argumento contém uma barra invertida.
É mais confiável usar printf
(como um comando interno ou um comando externo) onde o comportamento é mais bem definido: a barra invertida no estilo C escapa e os especificadores de formato são suportados na string de formato (o primeiro argumento).
printf 'foo\nbar\n'
printf '%s\n%s\n' foo bar
Você pode controlar a expansão de sequências de escape de barra invertida do comando interno echo
do bash com a opção xpg_echo
shell.
Defina-o na parte superior de qualquer script bash para que echo
expanda automaticamente as saídas de barra invertida sem precisar adicionar -e
a cada comando de eco.
shopt -s xpg_echo
echo 'foo\nbar'