"echo -n" imprime "-n"

Resuelto qwertz asked hace 12 años • 11 respuestas

Tengo un problema con echomi script:

echo -n "Some string..."

huellas dactilares

-n Some string...

y pasa a la siguiente línea. En la consola funciona correctamente sin nueva línea:

Some string...
qwertz avatar Jun 25 '12 23:06 qwertz
Aceptado

Existen varias versiones del echocomando, con diferentes comportamientos. Aparentemente, el shell utilizado para su script usa una versión que no reconoce -n.

El printfcomando tiene un comportamiento mucho más consistente. echoestá bien para cosas simples como echo hello, pero sugiero usarlo printfpara algo más complicado.

¿En qué sistema estás y qué shell utiliza tu script?

Keith Thompson avatar Jun 25 '2012 16:06 Keith Thompson

bashtiene un comando "integrado" llamado "echo":

$ type echo
echo is a shell builtin

Además, hay un comando "echo" que es un ejecutable adecuado (es decir, el shell bifurca y ejecuta /bin/echo, en lugar de interpretarlo echoy ejecutarlo):

$ ls -l /bin/echo
-rwxr-xr-x 1 root root 22856 Jul 21  2011 /bin/echo

El comportamiento de cualquiera echode ellos con respecto a \cy -nvaría. Lo mejor que puede hacer es utilizar printf, que está disponible en cuatro sabores *NIX diferentes que miré:

$ printf "a line without trailing linefeed"
$ printf "a line with trailing linefeed\n"
aqn avatar Jun 28 '2012 18:06 aqn

Pruebe con

echo -e "Some string...\c"

Funciona para mí como se esperaba (como entendí por su pregunta).

Tenga en cuenta que obtuve esta información de la manpágina. La manpágina también señala que el shell puede tener su propia versión echoy no estoy seguro de si bashtiene su propia versión.

Sonny avatar Jun 25 '2012 16:06 Sonny