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