我正在学习bash并尝试理解这两种从文件中读取行的方法之间的区别。
1
while IFS= read -r line
do
echo $line
done < "$file"
2
cat $file |
while read data
do
echo $i
done
基本上我想知道的是: 他们中的任何一个比其他人更常见吗?是否存在性能差异?等
此外,还有其他方法可以从文件中读取更好的文件,特别是在阅读大文件时吗?
答案 0 :(得分:5)
第二个是无用的猫:http://porkmail.org/era/unix/award.html
我使用done < "$file"
表单。
不,在Bash中没有更好的方法。但是消除一个进程(cat
)很不错。
答案 1 :(得分:3)
第一种方法有一些优点:
cat
和管道即使while循环使用另一个命令的输出(通过如下所示的进程替换),第一种方法更好,因为它消除了子shell:
while read -r line; do
# loop steps
done < <(_command_)
另见: