zsh
echo
se comporta da maneira padrão, como bash
no modo UNIX. Ou seja, ele expande \b
para o caractere ASCII BS, conforme exigido pela especificação UNIX.
Não use echo
para exibir strings arbitrárias, use printf
:
printf '%s\n' "$1"
print -r -- "$1"
também funciona, mas é ksh
/ zsh
específico.
echo -E - "$1"
trabalha com zsh
e acredito em alguns BSDs.
cat << EOF
$1
EOF
funciona em qualquer shell parecido com o Bourne, mesmo em algumas décadas, quando não havia nenhum comando printf
, mas gerou um novo processo, e não é necessário atualmente, já que agora temos printf
em todos os lugares.
E, a propósito, você precisa escapar das barras invertidas em uma linha de comando do shell, já que é especial para o shell (cada shell, mas rc
), então:
$ foo '\foo\bar'
foo \foo\bar
passaria a string "\foo\bar"
para foo
, que não pode reinventar a barra invertida perdida de volta.