From LQWiki
Jump to navigation Jump to search


The while is a construct used in many programming languages to perform a loop repeatedly until a condition is met.

For example, in C one could write:

while (condition) {
  some code

some code would be executed repeatedly until condition became false. If condition was false to start with, then some code would be skipped completely.

A while loop is equivalent to:

label1: if (! condition) {
           goto label2
        do something
        code continues

The while loop is an unbound loop, meaning that the number of iterations through the loop is not set before to the loop being executed. This means that various bugs can cause the loop to enter infinite recursion, where the exit condition is never met and the loop runs forever. On the other hand, some algorithms can only be implemented using unbounded loops.

Do While Loops

The C languages also uses the syntactically similar do...while loop, like this:

do {
  some code
} while (condition)

This is similar, except that some code is always executed at least once, and the exit condition is worked out at the end of the loop instead.

A do while loop is equivalent to:

label1: some code
        if (condition) {
          goto label1;

Linux Scripting

The BASH shell-scripting language has constructs for both while and its complement method, until.

The basic construct for a while loop in a BASH script is:

while some command;
do other command;

Here, some command is executed. If its exit status is non-zero, the while statement ends. Otherwise, other command is executed, its exit condition is ignored, and then it goes back to executing some command again.

One simple example prints out the word “yes” repeatedly:

while true; do echo "yes"; done

This is one possible implementation of the basic yes command.