UNIX Power Tools

UNIX Power ToolsSearch this book
Previous: 45.18 Using basename and dirname Chapter 45
Shell Programming for the Initiated
Next: 45.20 Overview: Open Files and File Descriptors
 

45.19 A while Loop with Several Loop Control Commands

Most people think the Bourne shell's while loop (44.10) looks like this, with a single command controlling the loop:

while command
do
     ...whatever
done

But command can actually be a list of commands. The exit status of the last command controls the loop. This is handy for prompting users and reading answers - when the user types an empty answer, the read command returns "false" and the loop ends:

while echo "Enter command or CTRL-d to quit: \c"
      read command
do
      ...process $command
done

Here's a loop that runs who and does a quick search on its output. If the grep returns non-zero status (because it doesn't find $who in $tempfile), the loop quits - otherwise, the loop does lots of processing:

while
    who > $tempfile
    grep "$who" $tempfile >/dev/null

do
    ...process $tempfile...
done

- JP


Previous: 45.18 Using basename and dirname UNIX Power ToolsNext: 45.20 Overview: Open Files and File Descriptors
45.18 Using basename and dirname Book Index45.20 Overview: Open Files and File Descriptors

The UNIX CD Bookshelf NavigationThe UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System