Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.unix.shell > #4886

Re: [zsh] How to mimic errexit within subshell (or function)?

From kj <no.email@please.post>
Newsgroups comp.unix.shell
Subject Re: [zsh] How to mimic errexit within subshell (or function)?
Date 2012-05-03 18:20 +0000
Organization none
Message-ID <jnui9j$b8b$1@reader1.panix.com> (permalink)
References <jnpk36$jqs$1@reader1.panix.com> <slrnjq235r.qt6.vaeth@lounge.imp.fu-berlin.de> <jns0pa$apr$1@reader1.panix.com> <20120502192715.GG10446@chaz.gmail.com>

Show all headers | View raw


In <20120502192715.GG10446@chaz.gmail.com> Stephane Chazelas
<stephane.chazelas@gmail.com> writes:

>2012-05-02 19:09:30 +0000, kj:
>> 
>> First of all, thanks for all the replies!
>> 
>> In <slrnjq235r.qt6.vaeth@lounge.imp.fu-berlin.de> Martin Vaeth
>> <vaeth@mathematik.uni-wuerzburg.de> writes:
>> 
>> >kj <no.email@please.post> wrote:
>> >>
>> >> despite the set -e (errexit), the subshell does
>> >> not exit on error
>> 
>> >Here it does (in script and also interactive):
>> 
>> ># ( set -e; printf a; false; printf b ); echo $?
>> >a1
>> 
>> Thanks.  But now I'm **really** confused.  I don't why the first
>> subshell below (i.e. your version) terminates upon error but the
>> second one (mine) doesn't:
>> 
>> % ( set -e; printf a; false; printf b ); echo $?
>> a1
>> % ( set -e; printf a; false; printf b ) || echo $?
>> ab% 
>> 
>> Actually, I don't understand why mine doesn't work, period, since
>> I can't find anything in the zsh docs saying that it shouldn't...
>> Any pointers to the place in the zsh docs where this is explained
>> would be much appreciated.  (I hope that *some day* I'll learn to
>> find my way around the zsh documentation, but I'm nowhere near that
>> point yet.)
>[...]

>It's not specific to zsh.

<helpful explanation snipped>

>It's a bit confusing but that's how all the shells behave.

Hmm... I wonder if this is why the zsh documentation does not mention
this bit of general shell weirdness (AFAICT).

Be that as it may, thanks for the clarification.


In <20120502195328.GH10446@chaz.gmail.com> Stephane Chazelas
<stephane.chazelas@gmail.com> writes:

>2012-05-02 19:33:34 +0000, kj:
>>   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=520101
>>   http://permalink.gmane.org/gmane.linux.debian.devel.bugs.general/545456
>> 
>> Is this what you have in mind?
>[...]

>No, that's about coding practice, maintainability and
>reliability.

>Relying on "set -e" to do your error handling is a bad idea in
>anything more than the simplest of scripts that just run a
>command after the other.

>- commands can have non-zero exit statuses that don't mean an
>  error (see "test", "expr", "grep"...)
>- subtleties like the one you discovered about where its effects
>  are cancelled
>- interactions with subshells, pipes, background jobs
>- some commands will output errors, some will no, "set -e" will
>  not explain why the script dies.

>You just can't assume it works without having to worry.

>And if you start to worry, it's a lot simpler to do the error
>handling properly.


That's food for thought, thanks.  Maybe it's time to revisit my
approach to error handling in shell scripts...

~k

Back to comp.unix.shell | Previous | NextPrevious in thread | Find similar


Thread

[zsh] How to mimic errexit within subshell (or function)? kj <no.email@please.post> - 2012-05-01 21:20 +0000
  Re: [zsh] How to mimic errexit within subshell (or function)? Stephane Chazelas <stephane.chazelas@gmail.com> - 2012-05-02 07:34 +0100
    Re: [zsh] How to mimic errexit within subshell (or function)? Geoff Clare <geoff@clare.See-My-Signature.invalid> - 2012-05-02 13:51 +0100
      Re: [zsh] How to mimic errexit within subshell (or function)? Stephane Chazelas <stephane.chazelas@gmail.com> - 2012-05-02 14:29 +0100
    Re: [zsh] How to mimic errexit within subshell (or function)? kj <no.email@please.post> - 2012-05-02 19:33 +0000
      Re: [zsh] How to mimic errexit within subshell (or function)? Stephane Chazelas <stephane.chazelas@gmail.com> - 2012-05-02 20:53 +0100
  Re: [zsh] How to mimic errexit within subshell (or function)? Martin Vaeth <vaeth@mathematik.uni-wuerzburg.de> - 2012-05-02 10:30 +0000
    Re: [zsh] How to mimic errexit within subshell (or function)? kj <no.email@please.post> - 2012-05-02 19:09 +0000
      Re: [zsh] How to mimic errexit within subshell (or function)? kj <no.email@please.post> - 2012-05-02 19:12 +0000
      Re: [zsh] How to mimic errexit within subshell (or function)? Stephane Chazelas <stephane.chazelas@gmail.com> - 2012-05-02 20:27 +0100
        Re: [zsh] How to mimic errexit within subshell (or function)? kj <no.email@please.post> - 2012-05-03 18:20 +0000

csiph-web