Я сбрасываю строку с hexdump
таким 2031 3334 2e30 0a32 2032 3331 302e 000a
. Ясно, что 0x0a
это символ новой строки, однако, когда я пытаюсь отобразить эту строку, я всегда получаю 1 430.2 2 13.0
- новая строка заменяется пробелом, даже я использую -e
флаг.
В чем может быть проблема? Хвост \0
испортит выход? Есть ли альтернативы для печати 0x0a
новой строки?
Спасибо и всего наилучшего.
echo -e
. Спасибо, я нашел решение.printf "...\n"
вместоecho
.Ответы:
Символ новой строки с
echo
командой "\ n". Возьмем следующий пример:Приведет к выводу
«-Е» параметр является важным здесь.
источник
"echo -e ..."
зависит от эхо Bash для правильной работы (например,dash
просто напечатать "-e"); но '/ bin / echo' также может (или не может) работать. К сожалению (возможно, уместно), вокруг много эхо, и вам не очень важно заботиться о том, какой вы получите. Использование'printf "....\n"
является более переносимым вариантом для env и оболочек.POSIX 7 говорит, что вы не можете
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
не определяется, и обратные слэши определяются реализацией:если у вас нет дополнительного расширения XSI.
Так что используйте
printf
вместо:Формат файла нотация :
Также имейте в виду, что Ubuntu 15.10 и большинство дистрибутивов реализуют
echo
как:help echo
which echo
что может привести к некоторой путанице.
источник
Я наконец правильно отформатировал эту строку с
printf "$string"
. Спасибо вам всем.источник
$string
ты говоришь? Как это связано с вопросом? Что не включает\n
в себя, как в двух других ответах?