variable with - Echo newline in Bash stampa letterale \ n





8 Answers

Sei sicuro di essere in balia? Funziona per me, in tutti e tre i modi:

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

In Bash, provato questo:

echo -e "hello\nworld"

Ma non stampa una nuova riga, solo \n . Come posso far stampare la nuova riga?

Sto usando Ubuntu 11.04.




Puoi sempre fare echo "" .

per esempio

echo "Hello"
echo ""
echo "World"



Provare

echo -e "hello\nworld"
hello
world

ha funzionato per me in nano editor.




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



Un'altra voce qui per coloro che non hanno funzionato con una di queste soluzioni e hanno bisogno di ottenere un valore di ritorno dalla loro funzione:

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

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

Solo questo trucco ha funzionato in una linux su cui stavo lavorando con questa bash:

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

Spero che aiuti qualcuno con problemi simili.




Puoi anche usare l'eco con le parentesi graffe,

$ (echo hello; echo world)
hello
world



Puoi anche fare:

echo "hello
world"

Questo funziona per me sul mio macOS.




C'è una nuova espansione dei parametri aggiunta in bash 4.4 che interpreta le sequenze di escape:

${parameter@operator} - E operator

L'espansione è una stringa che è il valore del parametro con sequenze di escape backslash espanse come con il meccanismo di quotatura $'…' .

$ foo='hello\nworld'
$ echo "${foo@E}"
hello
world



Related