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"