Syntax:
while [ condition ]
do
command1
command2
command3
..
....
done
Loop is executed as long as given condition is true. For e.g..the for loop program 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 |