2015-09-22 11:45:20 -0400, Greg Wooledge:
> On Tue, Sep 22, 2015 at 10:19:56AM -0400, idal...@home.idallen.ca wrote:
> > Description:
> >     Adding a "local" keyword to a variable assignment hides the
> >     return code of a command substitution.  Same problem in both
> >     bash and dash shells.
> 
> Yes, this is how it works.  If you care about the return value of a
> command used to initialize a local variable, you have to write it in
> two steps:
> 
> foo() {
>     local foo
>     foo=$(bar) || return
> }
[...]

It also avoids problems with some other shells that support
"local" as a normal command when one forgets to quote the
$(command-subtitution) (where for instance
local foo=$(echo bar baz) is like local foo=bar baz)

Note that for "readonly", the assignment needs to be done first:

foo=$(bar) || return
readonly foo

-- 
Stephane

Reply via email to