Björn Augustsson wrote:
> Bash Version: 3.2
> Patch Level: 33
> Release Status: release
>
> Description:
>
> The test case below is pretty self-explanatory.
> The assignment in fun_bad() doesn't exit the shell,
> despite the "set -e".
>
> This is the version in Fedora 8.
> Also happens on
> * Bash Version: 3.1 Patch Level: 17 (Ubuntu Dapper)
> * Bash Version: 3.2 Patch Level: 0 (from ftp.gnu.org))
>
>
> Repeat-By:
>
> -----------------------------8<-------------------------
> #!/bin/bash
>
> set -e
>
> fun_bad() {
> local bah=$( false )
> }
>
> fun_good() {
> local bah
> bah=$( false )
> }
>
> echo "start"
>
> fun_bad
> echo "FAIL"
> fun_good
> echo "(Does not get here.)"
This isn't a bug.
The `local' command returns success if the variable assignment succeeds,
which it does. The command substitution doesn't affect its exit status.
This is how all builtins that affect variable attributes (declare/typeset,
export, readonly) should behave.
A line consisting of only assignment statements returns success unless
it contains a command substitution, in which case it returns the status
of the command substitution. This is as Posix specifies.
Chet
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
Chet Ramey, ITS, CWRU [EMAIL PROTECTED] http://cnswww.cns.cwru.edu/~chet/