On 19Sep2014 23:59, Chris Angelico <ros...@gmail.com> wrote:
On Fri, Sep 19, 2014 at 11:32 PM, David Alban <exta...@extasia.org> wrote:
if you omit the exit statement it in this example, and
$report_mode is not set, your shell program will give a non-zero return code
and appear to have terminated with an error.  in shell the last expression
evaluated determines the return code to the os.

IMO that's a terrible misfeature. If you actually want the return
value to be propagated, you should have to say so - something like:

#!/bin/sh
run_program
exit $?

Fortunately, Python isn't like that.

IMO, it is good that the shell is like that. It isn't Python.

A great many small shell scripts are one liner wrappers, and this serves them well. A great many more are a lot of prep work followed by a major (and final) command. These are also served well.

There is the hazard where someone careless goes:

  ... main script ...
  echo "script failed!" >&2

and accidentally exits with 0 (success).

For further fun, I run my shell scripts with the -e and -u options turned on.

And of course for complicated stuff I usually maintain a $xit variable, setting it to 1 when something goes blam, and finishing such scripts with:

  exit $xit

But for wrappers, the shell default exit design is handy.

Cheers,
Cameron Simpson <c...@zip.com.au>

From the back of the research lab, the sound of a large metallic pile of
loose objects collapsing, accompanied by a loud "Aaaaiiieeyyrrgghhh!!" from
George. A few seconds of silence, then: "I'll have to call you back."
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to