"echo -n" imprime "-n"
Tengo un problema con echo
mi 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...
Existen varias versiones del echo
comando, con diferentes comportamientos. Aparentemente, el shell utilizado para su script usa una versión que no reconoce -n
.
El printf
comando tiene un comportamiento mucho más consistente. echo
está bien para cosas simples como echo hello
, pero sugiero usarlo printf
para algo más complicado.
¿En qué sistema estás y qué shell utiliza tu script?
bash
tiene 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 echo
y ejecutarlo):
$ ls -l /bin/echo
-rwxr-xr-x 1 root root 22856 Jul 21 2011 /bin/echo
El comportamiento de cualquiera echo
de ellos con respecto a \c
y -n
varí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"
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 man
página. La man
página también señala que el shell puede tener su propia versión echo
y no estoy seguro de si bash
tiene su propia versión.