I work with a lot of people that just don’t understand what a while loop is, how it functions and most of all how to write one.
First off while loops are very useful for working with one-liners and data received on the command line. A while loop executes a portion of code until a condition that was true becomes false. So usually you use them with a counter like so:
count = 0
while [ $count -lt 10 ]; do
echo $count
let count+=1
done
This says line by line:
-
Setup a variable named $count and give it a value of 0.
-
While the variable $count is less than 10 print the number then add 1 to $count.
So when we first enter the while loop we can see the condition is true (0
Generally speaking though I don’t use bash for something like this. Most of my WHILE loops look like this:
cat some_file.txt | while read line; do echo $line; done
So what is going on above seeing as it looks nothing like what you just saw. First we say cat some_file.txt which means dump the contents of the file to STDOUT (your terminal) then we PIPE that to a WHILE loop. So the condition here is read line, in bash the read command takes a line of input and returns a 0 (The 0 means true in Bash although almost every other language disagrees) so in this case when read line receives a line of input it is really the same as writing:
while [ true ]; do
So it continues to move forward until ‘read line’ becomes false. Such as at the end of input or the end of a file.
