bash scripting

jc at trillian.mit.edu jc at trillian.mit.edu
Fri Sep 29 16:30:35 EDT 2000


--------

|  >I came accros the following construct in a bash script:
|  >
|  >if [ ! -f /path_to_file_1 -a -f /path_to_file_2 ] ; then
|  >        execute some stuff
|  >fi
|  >
|  >My question is what is the -a option?
|  
|  
|  The -a option specifies "logical AND"
|  
|  While running bash try invoking the builtin
|  "help" command (just to get a sense of what
|  bash is always standing by to help you with)
|  and then say "help [" so bash can remind
|  you that the "[" command is really just
|  an alias for the "test" command, and then
|  finally say "help test" and stand back -
|  all the possible options will go flying by,
|  including the "-a" one you inquired about...

And therin lies one of the explanations for the slowness of
shell scripts:  A test involves forking a subprocess.

This doesn't matter for most 5-line scripts, but it's  part
of  why  it's  nice to have real programming languages like
perl or tcl or python for when you want your script  to  do
something non-trivial.

(I've heard rumors that some versions of some shells do the
test  as a builtin, but I've had trouble verifying this.  I
know that the original Bourne shell  did  use  subprocesses
for  tests, and I've seen vague comments that this is still
more common than you might expect a quarter century later.)

-
Subcription/unsubscription/info requests: send e-mail with
"subscribe", "unsubscribe", or "info" on the first line of the
message body to discuss-request at blu.org (Subject line is ignored).



More information about the Discuss mailing list