Как напечатать символ новой строки с помощью echo?

Я сбрасываю строку с hexdump как это 2031 3334 2e30 0a32 2032 3331 302e 000a, Ясно, что 0x0a символ новой строки, однако, когда я пытаюсь отобразить эту строку, я всегда получаю 1 430.2 2 13.0 - новая строка заменяется пробелом, даже я использую -e флаг.

В чем может быть проблема? Хвост \0 испортить выход? Есть ли альтернативы для печати 0x0a новая линия?

Спасибо и всего наилучшего.

3 ответа

Решение

Символ новой строки с echo команда "\n". Возьмем следующий пример:

echo -e "This is line 1\nThis is line 2"

Приведет к выводу

This is line 1
This is line 2

Параметр "-e" важен здесь.

POSIX 7 говорит, что вы не можете

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

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

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

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

Так что используйте printf вместо:

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

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

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

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

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

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

Я наконец правильно отформатировал эту строку с printf "$string", Спасибо вам всем.

Другие вопросы по тегам