回答这个问题让我提出了另一个问题:
我认为下面的脚本做同样的事情,第二个应该快得多,因为第一个使用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是一个巨大的过程。我也遇到了第二个脚本的一些问题,例如输出文件的大小低于预期。
我还检查了手册页echo并cat比较了它们:
echo - 显示一行文本
cat - 连接文件并在标准输出上打印
但我没有得到区别。
所以:
i?(因为在它的手册页中
echo说它显示“一行文本”,所以我猜它只针对短变量进行了优化,而不是像 那样非常长的变量i。然而,这只是一个猜测。)echo?我用seq 10而不是`seq 10`错误的。这是编辑后的代码: …