bash - echo new line php




Echo newline в Bash печатает буквально \ n (12)

В Bash попытался:

echo -e "hello\nworld"

Но он не печатает новую строку, только \n . Как я могу сделать печать новой строки?

Я использую Ubuntu 11.04.


В bash 4.4 добавлено новое расширение параметров, которое интерпретирует escape-последовательности:

${[email protected]} - E operator

Расширение - это строка, которая представляет собой значение параметра с последовательностями escape-лака с обратной косой чертой, как и механизм $'…' цитирования.

$ foo='hello\nworld'
$ echo "${[email protected]}"
hello
world

В случае, если кто-то обнаруживает, что они бьют головой к стене, пытаясь понять, почему сценарий коллеги не будет печатать новые строки, обратите внимание на это ->

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

echo $(GET_RECORDS);

Как и в предыдущем случае, фактический запуск метода сам может быть обернут в эхо, которое заменяет любые эхо-сигналы, которые могут быть в самом методе. Очевидно, я опустил это для краткости, это было не так-то просто!

Затем вы можете сообщить своим товарищам, что лучший способ выполнения функций будет таким:

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

GET_RECORDS;

Вы всегда можете делать echo "" .

например

echo "Hello"
echo ""
echo "World"

Вы также можете использовать эхо с фигурными скобками,

$ (echo hello; echo world)
hello
world

Вы уверены, что находитесь в bash? Работает для меня, все три способа:

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

Еще одна запись здесь для тех, кто не помог ни с одним из этих решений, и должен получить возвращаемое значение из своей функции:

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

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

Только этот трюк работал в Linux, над которым я работал с этим bash:

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

Надеюсь, это поможет кому-то с подобной проблемой.


Мой скрипт:

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

Выход:

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

На моем сценарии bash я злился, пока я только что попробовал:

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

Просто нажмите Enter, где вы хотите вставить этот прыжок. Выходные данные теперь:

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

Пытаться

echo -e "hello\nworld"
hello
world

работал для меня в редакторе nano.


Это работает для меня в CentOS:

echo -e ""hello\nworld""

Это работает для меня в распб,

echo -e "hello\\nworld"


echo $'hello\nworld'

печать

hello
world

$'' используют ANSI C Quoting :

Слова формы $' string ' обрабатываются специально. Слово расширяется до строки с заменой символов с обратным слэшем, как указано в стандарте ANSI C.


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




newline