While

From LQWiki
Jump to navigation Jump to search

While

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
label2:
        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;
done


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.