36

Echo новой строки в Bash выводит литерал \n

284

Как мне вывести новую строку? В результате выполнения следующей команды просто выводится \n:

echo -e "Hello,\nWorld!"

Вывод:

Hello,\nWorld!

5 ответ(ов)

42

Для использования printf вместо echo в вашей команде, вы можете записать её следующим образом:

printf "hello\nworld\n"

printf ведет себя более последовательно в различных средах по сравнению с echo, что делает его предпочтительным выбором, особенно если вы хотите избежать неожиданных проблем с интерпретацией управляющих символов. Например, echo может по-разному обрабатывать символы новой строки и другие управляющие последовательности в зависимости от настроек оболочки и типа терминала. printf же всегда интерпретирует форматированные строки одинаково, что обеспечивает более предсказуемое поведение.

23

Убедитесь, что вы находитесь в Bash.

$ echo $0
bash

Все эти четыре способа работают у меня:

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

Если у вас возникнут дополнительные вопросы или вы захотите узнать больше об этих способах, не стесняйтесь спрашивать!

2

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

Например:

echo "Привет,"
echo ""
echo "Мир!"
0

Если кто-то из вас столкнулся с проблемой, когда скрипт вашего коллеги не выводит переносы строк, имейте в виду следующее:

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

echo $(GET_RECORDS);

В приведённом примере фактический вызов функции обёрнут в команду echo, что подавляет любые переносы строк, которые могут быть в самой функции. Очевидно, я немного упростил ситуацию, но это не так просто заметить!

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

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

GET_RECORDS;

Таким образом, переносы строк будут корректно отображаться.

0

Чтобы получить новую строку, просто введите

echo

Это выведет пустую строку в терминале.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь