script pasar parametros new example español ejemplos comandos shell command-line sh

pasar - shell script example



''echo'' sin nueva línea en un script de shell (4)

Tengo un problema con echo en mi script:

echo -n "Some string..."

huellas dactilares

-n Some string...

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

Some string...


Existen múltiples versiones del comando echo , con diferentes comportamientos. Aparentemente, el shell utilizado para su script usa 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?


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 del man . La página de man también señala que la shell puede tener su propia versión de echo , y no estoy seguro de 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.


bash tiene un comando "incorporado" llamado "echo":

$ type echo echo is a shell builtin

Además, hay un comando "echo" que es un ejecutable adecuado (es decir, el shell forks y execs /bin/echo , en lugar de interpretar echo y ejecutarlo):

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

El comportamiento de cualquiera de los WRT de echo a /c y -n varía. Lo mejor que puedes hacer es utilizar printf , que está disponible en cuatro sabores NIX diferentes * que observé:

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