[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: functions and set -e
From: |
Eric Blake |
Subject: |
Re: functions and set -e |
Date: |
Wed, 30 Aug 2006 04:28:35 +0000 |
> > > #!/bin/sh
> > > set -e
> > >
> > > func () {
> > > false && echo false
> > > true && echo true
> > > false && echo false
^^^ Line 1
> > > }
> > >
> > > func
^^^ Line 2
> > >
> > > echo done
> > >
> I'll take your word for it.. but I'm not totally convinced. At the very
> least, this behavior is very confusing and apparently not documented. It's
> just plain weird that the compound statement containing "false" causes the
> function call to end up with a nonzero exit status only bacause the
> statement appears *on the last line* of the function. The exact same
> statement on the first line of the function behaves as expected.
As marked above, the line causing bash to exit is not line 1 (which
was a compound statement), but line 2 (invoking a function by a
simple statement). Try rewriting line 2 as "func && echo false" to
see the difference.
--
Eric Blake