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