如何使用 echo 打印换行符?

如何使用 echo 打印换行符?

hexdump像这样转储一个字符串2031 3334 2e30 0a32 2032 3331 302e 000a。很明显是0x0a换行符,但是,当我尝试回显该字符串时,我总是得到1 430.2 2 13.0-- 新行被替换为空格,即使我使用了标志-e

可能是什么问题?拖尾会\0破坏输出吗?还有其他方法可以打印0x0a新行吗?

谢谢并致以最诚挚的问候。

答案1

该命令的换行符echo为“\n”。以下面的例子为例:

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

将导致输出

This is line 1
This is line 2

“-e”参数在这里很重要。

答案2

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

这可能会引起一些混乱。

答案3

我终于用 正确格式化了此字符串printf "$string"。谢谢大家。

相关内容