set -e (was: RHEL-CentOS conversion scripts (was Re: apache?))

Kevin D. Clark kevin_d_clark at comcast.net
Fri Apr 10 13:47:52 EDT 2009


Alan Johnson writes:

> At first, my scripting may be a bit confusing because I am very verbose for
> debuggin purposes, and I expect this kind of script is always going to need
> debugging.  You will see each command echoed before it is executed in an if
> statement so that it only conitues to the next command if each previous is
> successful (I hate the over use of && to run commands).

I have not looked at your scripts, but this reminds me of one of the
things that I am enthusiastic about:  "set -e" in shell scripts.

Here is the Bash documentation for "set -e":

  -e      Exit immediately if a simple command (see SHELL GRAMMAR
          above) exits with a non-zero status.  The shell does not
          exit if the command that fails is part  of  the command
          list  immediately  following  a  while or until keyword,
          part of the test in an if statement, part of or 
          list, or if the command's return value is being inverted
          via !.  A trap on ERR, if set, is  executed before the
          shell exits.


I frequently write industrial strength shell scripts, and I nearly
always put "set -e" at the top.  I would humbly suggest for those
people on this list who are not experts at creating shell scripts that
they begin all of their shell scripts like this:

    #!/bin/sh

    set -e

In my experience, configuring things this way (and being forced to
deal with the ramifications of this) leads to higher quality code.

Regards,

--kevin
-- 
GnuPG ID: B280F24E                God, I loved that Pontiac.
alumni.unh.edu!kdc                -- Tom Waits
http://kdc-blog.blogspot.com/     


More information about the gnhlug-discuss mailing list