O problema é que echo
interpreta -n
como argumento. Na implementação bash padrão, isso significa (de help echo
):
-n do not append a newline
Existem várias maneiras de contornar isso:
-
Transforme em algo que não é uma opção, incluindo outro personagem. Por exemplo, diga a
echo
para não imprimir uma nova linha com-n
e, em seguida, diga-a para interpretar vazamentos de barra invertida com-e
e adicione a nova linha explicitamente.$ echo -ne '-n\n' -n
-
Como alternativa, basta incluir um espaço
$ echo " -n" -n
Isso, no entanto, adiciona um espaço que você provavelmente não deseja.
-
Use um caractere não imprimível antes dele. Aqui. Estou usando o backspace (
\b
)$ echo -e "\b-n" -n
Isso também adiciona um caractere extra que você provavelmente não deseja.
-
Use truques
$ echo n- | rev -n
O comando
rev
simplesmente imprime sua saída invertida. -
Use a ferramenta certa para o trabalho
$ printf -- '-n\n' -n