Echo nueva línea en Bash imprime literal \ n



Answers

¿Estás seguro de que estás en bash? Funciona para mí, de las tres maneras:

echo -e "Hello\nworld"
echo -e 'Hello\nworld'
echo Hello$'\n'world
Question

En Bash, intenté esto:

echo -e "hello\nworld"

Pero no imprime una nueva línea, solo \n . ¿Cómo puedo hacer que imprima la nueva línea?

Estoy usando Ubuntu 11.04.




Esto podría hacerse mejor como

x="\n"
echo -ne $x

-e opción interpretará backslahes para la secuencia de escape
-n opción eliminará la nueva línea final en la salida

PD: el comando echo tiene el efecto de incluir siempre una nueva línea en la salida, por lo que se requiere -n para desactivarlo (y hacerlo menos confuso)




str='hello\nworld'
$ echo | sed "i$str"
hello
world



Una entrada más aquí para aquellos que no lo hicieron funcionar con ninguna de estas soluciones, y necesitan obtener un valor de retorno de su función:

function foo()
{
    local v="Dimi";
    local s="";
    .....
    s+="Some message here $v $1\n"
    .....
    echo $s
}

r=$(foo "my message");
echo -e $r;

Solo este truco funcionó en un linux en el que estaba trabajando con este bash:

GNU bash, version 2.2.25(1)-release (x86_64-redhat-linux-gnu)

Espero que ayude a alguien con un problema similar.




Funciona esto en todas partes?

echo "Hello
World"



Siempre puedes hacer echo "" .

p.ej

echo "Hello"
echo ""
echo "World"



Esto funciona para mí en raspbian,

echo -e "hello\\nworld"






Links