Which is the best way to write a loop that reads from a file?

bash, loops

Solution

The second one is a Useless Use of Cat: http://porkmail.org/era/unix/award.html

I use the `done < "$file"` form.

No, there is not a better way in Bash. But eliminating one process (`cat`) is nice.

Problem

I'm learning bash and trying to understand the difference between these two methods of reading lines from a file. 1. ``` while IFS= read -r line do echo $line done < "$file" ``` 2. ``` cat $file | while read data do echo $i done ``` So basically what I'm wondering is: Is either of them more common practice than the other? Are there performance differences? etc. Also, are there other ways of reading from a file that are even better, especially when it comes to reading from large files?

Original source

Related problems