Linux Shell Scripting Tutorial (LSST) v1.05r3
Prev
Chapter 3: Shells (bash) structured Language Constructs
Next

while loop

Syntax:

           while [ condition ]
           do
                 command1
                 command2
                 command3
                 ..
                 ....
            done

Loop is executed as long as given condition is true. For e.g.. Above for loop program (shown in last section of for loop) can be written using while loop as:

$cat > nt1
#!/bin/sh
#
#Script to test while statement
#
#
if [ $# -eq 0 ]
then
   echo "Error - Number missing form command line argument"
   echo "Syntax : $0 number"
   echo " Use to print multiplication table for given number"
exit 1
fi
n=$1
i=1
while [ $i -le 10 ]
do
  echo "$n * $i = `expr $i \* $n`"
  i=`expr $i + 1`
done

Save it and try as
$ chmod 755 nt1
$./nt1 7
Above loop can be explained as follows:

 
n=$1 Set the value of command line argument to variable n. (Here it's set to 7 )
i=1 Set variable i to 1
while [ $i -le 10 ]                   This is our loop condition, here if value of i is less than 10 then, shell execute all statements between do and done
do  Start loop
echo "$n  *  $i = `expr $i  \*  $n`"Print multiplication table as
7 * 1 = 7
7 * 2 = 14
....
7 * 10 = 70, Here each time value of variable n is multiply be i.
i=`expr $i + 1` Increment i by 1 and store result to i.  ( i.e. i=i+1)
Caution: If you ignore (remove) this statement  than our loop become infinite loop because value of variable i always remain less than 10 and program will only output
7 * 1 = 7
...
...
E (infinite times)
done                                   

Loop stops here if i is not less than 10 i.e. condition of loop is not true. Hence
loop is terminated.

 


Prev
Home
Next
for loop
Up
The case Statement