36.6. The Unappreciated Bourne Shell ":" Operator
Some people think that the Bourne
shell's : is a comment character. It
isn't, really. It evaluates its arguments and
returns a zero exit status (Section 35.12). Here are a few places to use it:
-
Replace the Unix true command to
make an endless while loop (Section 35.15). This is more efficient because the shell
doesn't have to start a new process each time around
the loop (as it does when you use while true):
while :
do
commands
done
(Of course, one of the commands will
probably be break, to end the loop eventually.
This presumes that it is actually a savings to have the
break test inside the loop body rather than at the
top, but it may well be clearer under certain circumstances to do it
that way.)
-
When you want to use the else in an
if ( Section 35.13) but
leave the then empty, the : makes a nice
"do-nothing" place filler:
if something
then :
else
commands
fi
-
If your Bourne shell doesn't
have a true # comment character (but nearly all of
them do nowadays), you can use : to "fake
it." It's safest to use quotes so
the shell won't try to interpret characters like
> or | in your
"comment":
: 'read answer and branch if < 3 or > 6'
-
Finally, it's
useful with parameter substitution
(Section 35.7) like
${var?}
or
${var=default}.
For instance, using this line in your script will print an error and
exit if either the USER or
HOME variables aren't set:
: ${USER?} ${HOME?}
-- JP
| | | 36.5. The exec Command | | 36.7. Parameter Substitution |
Copyright © 2003 O'Reilly & Associates. All rights reserved.
|
|