Volcado una cadena con hexdump
esto 2031 3334 2e30 0a32 2032 3331 302e 000a
. Está claro que 0x0a
es un nuevo carácter de línea, sin embargo, cuando trato de hacer eco de esta cadena, siempre obtengo 1 430.2 2 13.0
: la nueva línea se reemplaza con un espacio, incluso uso la -e
bandera.
¿Cuál puede ser el problema? ¿La cola \0
arruina la salida? ¿Hay alguna alternativa para imprimir 0x0a
una nueva línea?
Gracias y un saludo.
echo -e
. Gracias, encuentro una solución.printf "...\n"
lugar deecho
.Respuestas:
El nuevo carácter de línea con el
echo
comando es "\ n". Tomando el siguiente ejemplo:Daría como resultado la salida
El parámetro "-e" es importante aquí.
fuente
"echo -e ..."
basa en el eco de bash para funcionar correctamente (por ejemplo,dash
solo imprimirá "-e"); pero '/ bin / echo' puede (o no) también funcionar. Desafortunadamente (tal vez apropiadamente), hay muchos ecos, y realmente no quieres preocuparte por cuál vas a obtener. Usar'printf "....\n"
es una opción más portátil a través de env's y shells.POSIX 7 dice que no puedes
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
no está definido y las barras diagonales inversas están definidas en la implementación:a menos que tenga una extensión XSI opcional.
Entonces use
printf
en su lugar:la notación de formato de archivo :
También tenga en cuenta que Ubuntu 15.10 y la mayoría de las distribuciones implementan
echo
tanto como:help echo
which echo
lo que puede generar cierta confusión.
fuente
Finalmente formateo correctamente esta cadena con
printf "$string"
. Gracias a todos.fuente
$string
que hablas? ¿Cómo se relaciona esto con la pregunta? ¿Qué es lo que no implica\n
como en las otras dos respuestas?