为什么回显$'\ n'打印2行?

时间:2019-10-12 20:33:05

标签: linux bash shell

我正在尝试学习Shell脚本,并且遇到ANSI-C Quoting。我知道,反冲转义序列将由ANSI-C标准解码。根据链接,echo $'\n'应该打印一个换行符。我无法理解为什么echo $'\n'打印2个换行符?

2 个答案:

答案 0 :(得分:5)

我们来看一些文档:

来自posix echo

  

echo实用程序将其参数写入标准输出,后跟一个

echo有一个参数。参数是$'\n'-解码为换行符。因此echo打印它的参数-一个换行符-后跟一个换行符-这样总共两个换行符。

答案 1 :(得分:0)

原因是echo用结尾的换行符写输出。

如果您执行strace,则可以在write系统调用中看到它:-

$ strace -e write echo $'\n'
write(1, "\n", 1
)                       = 1
write(1, "\n", 1
)                       = 1

根据手册,您可以使用-n开关禁止显示此信息:-

$ strace -e write echo -n $'\n'
write(1, "\n", 1
)                       = 1