‘echo’ sin nueva línea en un script de shell

Tengo un problema con echo en mi script:

 echo -n "Some string..." 

huellas dactilares

 -n Some string... 

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

 Some string... 

Hay múltiples versiones del comando echo , con diferentes comportamientos. Aparentemente, el shell utilizado para su script utiliza una versión que no reconoce -n .

El comando printf tiene un comportamiento mucho más consistente. echo está bien para cosas simples como echo hello , pero sugiero usar printf para algo más complicado.

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

bash tiene un comando “incorporado” llamado “echo”:

 $ type echo echo is a shell builtin 

Además, hay un comando “echo” que es un ejecutable apropiado (es decir, las diapositivas y los ejecutables /bin/echo , en lugar de interpretar el echo y ejecutarlo):

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

El comportamiento de cualquier echo WRT a \c y -n varía. Su mejor opción es usar printf , que está disponible en cuatro sabores * NIX diferentes que miré:

 $ printf "a line without trailing linefeed" $ printf "a line with trailing linefeed\n" 

Prueba con

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

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

Tenga en cuenta que obtuve esta información de la página man . La página man también señala que el shell puede tener su propia versión de echo , y no estoy seguro si bash tiene su propia versión.

Si usa echo dentro de un if con otros comandos, como “leer”, puede ignorar la configuración y saltará a una nueva línea de todos modos.