Эхо новой строки в Bash печатает буквально \ n

В Python вы не можете ссылаться на класс в классе, хотя на таких языках, как Ruby, вы можете это сделать.

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

2020
задан Mateusz Piotrowski 27 March 2016 в 09:46
поделиться

9 ответов

В некоторых случаях вы должны отобразить длинный контент (например, код) с некоторой конкатенацией env var и хотите упростить его.

echo -e, printf могут иметь некоторые ограничения

Вы можете использовать специальный символ в качестве заполнителя для переноса строки (например, ~)

и попробовать это:

echo ${content} | tr '~' '\n' > $targetFile

необходимо вызвать другую программу (tr), что должно быть хорошо для ИМО.

-1
ответ дан ZenithS 27 March 2016 в 09:46
поделиться

Иногда вы можете передать несколько строк, разделенных пробелом, и это будет интерпретировано как \n.

Например, при использовании сценария оболочки для многострочных уведомлений:

#!/bin/bash
notify-send 'notification success' 'another line' 'time now '`date +"%s"`
0
ответ дан Hunter Frazier 27 March 2016 в 09:46
поделиться

Мне приходилось заключать текст в двойные кавычки при использовании в качестве псевдонима в профиле bash (MacOx, iTerm).

alias helloworld="echo -e \"hello \n world\""
0
ответ дан John Jai 27 March 2016 в 09:46
поделиться

POSIX 7 на эхо

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

-e не определено, а обратные слэши определяются реализацией:

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

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

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

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

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

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

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

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

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

18
ответ дан Ciro Santilli 新疆改造中心996ICU六四事件 27 March 2016 в 09:46
поделиться

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

echo -e "Hello\nworld"
echo -e 'Hello\nworld'
echo Hello\n'world
1515
ответ дан choroba 27 March 2016 в 09:46
поделиться

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

$ (echo hello; echo world)
hello
world
2
ответ дан Avinash Raj 27 March 2016 в 09:46
поделиться

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

echo -e ""hello\nworld""
9
ответ дан vanishedzhou 27 March 2016 в 09:46
поделиться

Try

echo -e "hello\nworld"
hello
world

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

34
ответ дан Harsha Biyani 27 March 2016 в 09:46
поделиться

Вы также можете сделать:

echo "hello
world"

Это работает как внутри скрипта, так и из командной строки.
В командной строке нажмите Shift + Enter , чтобы сделать разрывы строк внутри строки.

Это работает для меня на моем MacOS и Ubuntu 18.04

4
ответ дан vinzee 27 March 2016 в 09:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: