bash - different - echo new line php




Nueva línea de eco en impresiones Bash literal \ n (12)

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

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

En Bash, probé 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.


A veces, puede pasar varias cadenas separadas por un espacio y se interpretará como \n .

Por ejemplo, cuando se usa un script de shell para notificaciones de varias líneas:

#!/bin/bash
notify-send 'notification success' 'another line' 'time now '`date +"%s"`

Esto funciona para mí en raspbian,

echo -e "hello\\nworld"


Esto podría hacerse mejor como

x="\n"
echo -ne $x

-e la opción interpretará las barras traseras 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 final en la salida, por lo que se requiere -n para apagar esa cosa (y hacerlo menos confuso)


Me funciona en CentOS:

echo -e ""hello\nworld""

Mi guion:

echo "WARNINGS: $warningsFound WARNINGS FOUND:\n$warningStrings

Salida:

WARNING : 2 WARNINGS FOUND:\nWarning, found the following local orphaned signature file:

En mi guión de bash me estaba enojando como tú hasta que lo intenté:

echo "WARNING : $warningsFound WARNINGS FOUND:
$warningStrings"

Simplemente pulsa enter donde quieras insertar ese salto. La salida ahora es:

WARNING : 2 WARNINGS FOUND:
Warning, found the following local orphaned signature file:

Siempre podías hacer echo "" .

p.ej

echo "Hello"
echo ""
echo "World"

También podrías usar el eco con tirantes,

$ (echo hello; echo world)
hello
world

Tratar

echo -e "hello\nworld"
hello
world

Trabajó para mí en nano editor.


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 esta fiesta:

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

Espero que ayude a alguien con un problema similar.


echo $'hello\nworld'

huellas dactilares

hello
world

$'' cadenas utilizan ANSI C Cotización :

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


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




newline