相关疑难解决方法(0)

为什么echo和cat的执行时间有这么大的差别?

回答这个问题让我提出了另一个问题:
我认为下面的脚本做同样的事情,第二个应该快得多,因为第一个使用cat需要一遍又一遍地打开文件但第二个只打开文件一次,然后只回显一个变量:

(有关正确的代码,请参阅更新部分。)

第一的:

#!/bin/sh
for j in seq 10; do
  cat input
done >> output
Run Code Online (Sandbox Code Playgroud)

第二:

#!/bin/sh
i=`cat input`
for j in seq 10; do
  echo $i
done >> output
Run Code Online (Sandbox Code Playgroud)

而输入大约是 50 兆字节。

但是当我尝试第二个时,它太慢了,因为回显变量i是一个巨大的过程。我也遇到了第二个脚本的一些问题,例如输出文件的大小低于预期。

我还检查了手册页echocat比较了它们:

echo - 显示一行文本

cat - 连接文件并在标准输出上打印

但我没有得到区别。

所以:

  • 为什么在第二个脚本中 cat 如此之快而 echo 如此之慢?
  • 还是变量的问题i?(因为在它的手册页中 echo说它显示“一行文本”,所以我猜它只针对短变量进行了优化,而不是像 那样非常长的变量i。然而,这只是一个猜测。)
  • 为什么我在使用时遇到问题echo

更新

我用seq 10而不是`seq 10`错误的。这是编辑后的代码: …

shell echo quoting cat command-substitution

15
推荐指数
2
解决办法
6408
查看次数

标签 统计

cat ×1

command-substitution ×1

echo ×1

quoting ×1

shell ×1