7
为什么echo和cat的执行时间会有这样的差异?
回答这个问题使我又问了一个问题: 我认为以下脚本可以做同样的事情,第二个脚本应该更快,因为第一个脚本cat需要一遍又一遍地打开文件,而第二个脚本仅可以打开文件一次然后回显一个变量: (请参阅更新部分以获取正确的代码。) 第一: #!/bin/sh for j in seq 10; do cat input done >> output 第二: #!/bin/sh i=`cat input` for j in seq 10; do echo $i done >> output 而输入约为50兆字节。 但是当我尝试第二个时,它太慢了,因为回显变量i是一个巨大的过程。第二个脚本也有一些问题,例如输出文件的大小比预期的要小。 我还检查了的手册页echo并cat进行比较: 回声-显示一行文本 cat-连接文件并在标准输出上打印 但是我没有区别。 所以: 为什么第二个脚本中的cat这么快而echo这么慢? 还是变量问题i?(因为在手册页中 echo据说它显示“一行文本”,所以我猜它仅针对短变量进行了优化,而不是针对非常长的变量进行了优化i。但是,这只是一个猜测。) 为什么使用时会出问题echo? 更新 我用seq 10而不是`seq 10`不正确。这是编辑的代码: 第一: #!/bin/sh for j …