Как напечатать символ новой строки с помощью 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"
, Спасибо вам всем.