Эхо новой строки в Bash печатает буквально \ n - PullRequest
2014 голосов
/ 12 декабря 2011

В Bash пробовал это:

echo -e "hello\nworld"

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

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

Ответы [ 20 ]

2471 голосов
/ 12 декабря 2011

Вместо этого можно использовать printf:

printf "hello\nworld\n"

printf имеет более согласованное поведение, чем echo.Поведение echo сильно отличается в разных версиях.

1511 голосов
/ 12 декабря 2011

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

echo -e "Hello\nworld"
echo -e 'Hello\nworld'
echo Hello$'\n'world
509 голосов
/ 02 ноября 2012
echo $'hello\nworld'

печать

hello
world

$'' используются строки ANSI C Цитирование :

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

119 голосов
/ 01 марта 2014

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

, например

echo "Hello"
echo ""
echo "World"
39 голосов
/ 09 августа 2013

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

#!/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;
33 голосов
/ 05 декабря 2017

Попробуйте

echo -e "hello\nworld"
hello
world

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

22 голосов
/ 19 апреля 2014

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

echo -e "hello\\nworld"
17 голосов

POSIX 7 на эхо

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html

-e не определено и обратная косая черта определяется реализацией:

Еслипервый операнд -n, или если любой из операндов содержит символ , результаты определяются реализацией.

, если у вас нет дополнительного расширения XSI.

Поэтому я рекомендую вам использовать вместо него printf, что хорошо указано:

*Операнд формата 1022 *

должен использоваться в качестве строки формата, описанной в нотации формата файла XBD [...]

нотация формата файла :

\ n Переместите позицию печати в начало следующей строки.

Также имейте в виду, что Ubuntu 15.10 и большинство дистрибутивов реализуют echo как:

  • a Встроенный в Bash: help echo
  • автономный исполняемый файл: which echo

, что может привести к некоторой путанице.

15 голосов
/ 23 ноября 2012
str='hello\nworld'
$ echo | sed "i$str"
hello
world
9 голосов
/ 17 августа 2018

У меня это работает в CentOS:

echo -e ""hello\nworld""
...