@blue I often use cat in my bash scripts instead of specifying a filename, because the overhead is minimal and because the syntax cat ... | ... > ... shows really nicely what the input is and where the output goes. You're right though, it's not actually needed here.
– Tom van der WoerdtJun 16 '13 at 20:27

If your file contains n lines, then your script has to read the file n times; so if you double the length of the file, you quadruple the amount of work your script does — and almost all of that work is simply thrown away, since all you want to do is loop over the lines in order.

Instead, the best way to loop over the lines of a file is to use a while loop, with the condition-command being the read builtin:

while IFS= read -r line ; do
# $line is a single line of the file, as a single string
: ... commands that use $line ...
done < input_file.txt

In your case, since you want to split the line into an array, and the read builtin actually has special support for populating an array variable, which is what you want, you can write: