经理认为:
如果shell的环境是bash,那么在一般的使用过程中,echo和printf的功能相差无几。echo也可以通过-e参数来实现扩展格式的输出。但是如果一定要分个高下的话,那么printf肯定是要更胜一筹的。从前的bash版本中printf不是内置命令,调用时的开销要比echo略大,但现在最近的Linux发行版中printf已经是内置的命令了,并且printf与C版本的printf几乎是完全一样的,所以printf在功能和效率上都要更加强大。
echo与printf的功能差异一是末尾换行符以及对转义字符的处理不一样:echo命令的帮助页中描述其功能的第一句话就是:将它后面的参数输出到标准输出流。
printf命令的帮助页描述是:在 FORMAT 的控制下格式化并打印 ARGUMENTS 参数。
echo在打印自己的参数的时候,会进行自动的换行,而printf不会:
另外就是对转义字符的处理也不一样:
如果printf需要输出后换行,则必须在末尾加上换行符:
二是打印出来的字符结尾不一样:echo打印的字符不以EOF结尾,printf打印的字符是以EOF结尾的。这个特性,在向某些端口发送数据的时候需要注意,使用echo发送数据的话,端口因为没有读到EOF字符所以会一直处于接收状态,造成发送超时或者失败;这个时候就需要使用printf。这一差别到现在不知是否有无改变,如果有知道的大神还请在评论区指点一下。
三是printf支持的格式化功能比echo更多:尽管echo可以通过-e参数实现对一些特殊字符的输出,并且也可以输出8\16进制的ASCII字符以及其它控制字符,但printf全部都能够支持,除此之外还可以实现左对齐右对齐等格式化输出。这是它比echo强大的主要原因。
echo与printf的性能差异在早现版本的bash里,printf不是内置实现的,所以效率比较低。当前版本的bash已经内置了printf,所以效率有了很大提升。经理偶专门做了一下测试,分别调用echo和printf命令一百万次,看看用时长短:
从测试的结果来看,时间上都差不多,printf还稍微快了一些。
总结echo和printf命令大家都比较常用,printf已经变成了内置实现,效率和功能都更加优秀。使用起来和C语言的版本基本相同,同时支持格式化输出、控制字符输出、多进制输出和字符颜色主题输出。并且在一些特殊场景下的兼容性更好,所以在输出语句的角度来讲,printf更加强大。
如果偶的回答对你有点价值,请莫忘点赞加关注,谢谢!欢迎在评论区发表各种意见。
本文为作者原创,严禁转载,违者必究。文本域css,css交叉轴,怎么识别卡片css,ios css 兼容问题,css防止字体被选中,css中叠层怎么写,css3开关按钮动态效果