Blog
August 10, 2014 Marie H.

Bash While Loops - A Simple How To

Bash While Loops - A Simple How To

Photo by <a href="https://www.pexels.com/@tima-miroshnichenko" target="_blank" rel="noopener">Tima Miroshnichenko</a> on <a href="https://www.pexels.com" target="_blank" rel="noopener">Pexels</a>

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:

  1. Setup a variable named $count and give it a value of 0.

  2. 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.