$ printf 'apple' | wc -m
5
$ echo 'apple' | wc -m
6
为什么printf输出5个字符,而echo输出6个字符?
echo
命令的man页面的第一句话(我加粗了):
输出由空格分隔的参数,后跟一个换行符。
printf
的man页面的第一句话:
在格式控制下将格式化的参数写入标准输出。
printf
仅打印出在格式中出现的内容,它不会附加隐含的换行符。
在处理foo
的内容时,echo "foo"
和printf "foo"
可能有其他不同之处。 POSIX规范允许实现者自由选择如何实现echo
,这样可能避免从众多历史实现中选择标准实现。在您需要精确控制输出时,请使用printf
。
bash
手册中的echo
条目,但它确实有歧义。我会澄清的。 - chepner以下是它们之间的区别:
$printf 'abcd'
abcd$ echo 'abcd'
abcd
$
您可以看到,额外的字符是换行符\n
echo -n 'apple' | wc -m
。 - Sumit