Loop Control: break and continue (Unix Power Tools, 3rd Edition)
35.23. Loop Control: break and continue
Normally a for
loop (Section 35.21) iterates until it has
processed all its word arguments. while and
until loops (Section 35.15) iterate until
the loop control command returns a certain status. But
sometimes -- for instance, if there's an
error -- you want a loop to immediately terminate or jump to the
next iteration. That's where you use
break and continue,
respectively.
break terminates the loop and takes control to the
line after done. continue skips
the rest of the commands in the loop body and starts the next
iteration. Here's an example of both. An outer loop
is stepping through a list of directories. If we
can't cd to one of them,
we'll abort the loop with break.
The inner loop steps through all entries in the directory. If one of
the entries isn't a file or isn't
readable, we skip it and try the next one.
'...' Section 28.14, || Section 35.14, * Section 1.13, test Section 35.26
for dir in `find $HOME/projdir -type d -print`
do
cd "$dir" || break
echo "Processing $dir"
for file in *
do
test -f "$file" -a -r "$file" || continue
...process $dir/$file...
done
done
With nested loops (like the file loop
above), which loop is broken or continued? It's the
loop being processed at that time. So the continue
here restarts the inner (file) loop. The break
terminates the outer (directory) loop, which means the inner loop is
also terminated. Note also that the -print argument
to find is often redundant in the absence of
another expression, depending on your version of
find.
Here we've used break and
continue within for loops,
after the shell's || operator.
But you can use them anywhere within the body of any loop -- in an
if statement within a while
loop, for instance.
-- JP
35.22. Handling Arguments with while and shift35.24. Standard Command-Line Parsing
Copyright © 2003 O'Reilly & Associates. All rights reserved.
Wyszukiwarka
Podobne podstrony:
ch35ch35!ch35ch35CH35 (4)ch35CH35ch35ch35ch35ch35ch35ch35ch35ch35&ch35ch35więcej podobnych podstron