Nueva línea de eco en Bash imprime literal \n

Resuelto Sergey asked hace 13 años • 24 respuestas

¿Cómo imprimo una nueva línea? Esto simplemente imprime \n:

$ echo -e "Hello,\nWorld!"
Hello,\nWorld!
Sergey avatar Dec 12 '11 04:12 Sergey
Aceptado

Utilice printfen su lugar:

printf "hello\nworld\n"

printfse comporta de manera más consistente en diferentes entornos que echo.

sth avatar Dec 11 '2011 21:12 sth

Asegúrate de estar en Bash.

$ echo $0
bash

Estas cuatro formas funcionan para mí:

echo -e "Hello\nworld"
echo -e 'Hello\nworld'
echo Hello$'\n'world
echo Hello ; echo world
choroba avatar Dec 11 '2011 21:12 choroba
echo $'hello\nworld'

huellas dactilares

hello
world

$''las cadenas utilizan ANSI C Citando :

Las palabras de la forma se tratan de manera especial. La palabra se expande a cadena , con caracteres de escape con barra invertida reemplazados según lo especificado por el estándar ANSI C.$'string'

Vanuan avatar Nov 02 '2012 09:11 Vanuan

Siempre puedes hacerlo echo "".

Por ejemplo,

echo "Hello,"
echo ""
echo "World!"
Nayeem Zen avatar Feb 28 '2014 22:02 Nayeem Zen

En el caso de que alguien se encuentre golpeándose la cabeza contra la pared tratando de descubrir por qué el guión de un compañero de trabajo no imprime nuevas líneas, tenga cuidado con esto:

#!/bin/bash
function GET_RECORDS()
{
   echo -e "starting\n the process";
}

echo $(GET_RECORDS);

Como en lo anterior, la ejecución real del método puede estar envuelta en un eco que reemplaza cualquier eco que pueda haber en el método mismo. Obviamente, lo suavicé por brevedad. ¡No fue tan fácil de detectar!

Luego puedes informar a tus camaradas que una mejor manera de ejecutar funciones sería así:

#!/bin/bash
function GET_RECORDS()
{
   echo -e "starting\n the process";
}

GET_RECORDS;
Uncle Iroh avatar Aug 08 '2013 20:08 Uncle Iroh