Testing Your Success (Unix Power Tools, 3rd Edition)
35.14. Testing Your Success
The shells let you test for success right
on the command line. This gives you a very efficient way to write
quick and comprehensible shell scripts.
I'm referring to the || and
&& operators and in particular, the
|| operator.
comm1 ||
comm2 is typically explained as
"execute the command on the right if the command on
the left failed." I prefer to explain it as an
"either-or" construct:
"execute either comm1 or
comm2." While this
isn't really precise, let's see
what it means in context:[106]
[106]Others refer to it as a
"short-circuit" operator.
cat filea fileb > filec || exit
This means "either cat the files
or exit." If you
can't cat the files (if
cat returns an exit status of 1), you exit (Section 24.4). If you
can cat the files, you don't
exit. You execute the left side or the right
side.
I'm stretching normal terminology a bit here, but I
think it's necessary to clarify the purpose of
||. By the way, we could give the poor user an
error message before flaming out (which, by the way, is a way to
write an "inverse if (Section 35.13)):
cat filea fileb > filec || {
echo sorry, no dice 1>&2
exit 1
}
Similarly, comm1 &&
comm2 means
"execute comm1 AND
comm2," or execute
comm2 if comm1 succeeds.
(But if you can't execute the first,
don't do any.) This might be helpful if you want to
print a temporary file and delete it immediately.
lpr file && rm file
If lpr fails for some reason, you want to leave
the file around. Again, I want to stress how to read this: print the
file and delete it. (Implicitly: if you don't print
it, don't delete it.)
-- ML
35.13. Test Exit Status with the if Statement35.15. Loops That Test Exit Status
Copyright © 2003 O'Reilly & Associates. All rights reserved.
Wyszukiwarka
Podobne podstrony:
ch35ch35!ch35ch35CH35 (4)ch35CH35ch35ch35ch35ch35ch35ch35ch35&ch35#ch35ch35więcej podobnych podstron