Ok, thanks for the clarification. This behaviour is not fully documented and I believe this should be addressed.
I don't mind participating. Could you point me in the right direction to do that and raise a pull request? Regards, Laurent On Sat, 30 May 2020, 16:32 Oğuz, <oguzismailuy...@gmail.com> wrote: > > > 30 Mayıs 2020 Cumartesi tarihinde Laurent Picquet <lpicq...@gmail.com> > yazdı: > >> Hello Dale, >> >> This is really interesting. >> Should the 'local' command be the one able to detect that the assignment >> to >> the variable had an non-zero exit code and return the non-zero exit code? >> >> as a developer, it is counter-intuitive that the 'local' command tells us >> everything is ok when it wasn't. If feel it should know that the >> assignment >> encountered a problem and should report it >> >> > Everything is ok for `local` though; it takes a valid assignment statement > and successfully evaluates that. So it's not that the assignment > encountered a problem, but that the expansion has failed, which has nothing > to do with `local`. So there is no reason for `local` to return a non-zero > exit status in that case. > > >> The return status is zero unless local is used outside a function, an >> invalid name is supplied, or name is a readonly variable. >> >> >> >> On Fri, 29 May 2020 at 03:43, Dale R. Worley <wor...@alum.mit.edu> wrote: >> >> > It's a subtle point. See this paragraph in the bash manual page: >> > >> > If there is a command name left after expansion, execution >> > proceeds as described below. Otherwise, the command exits. If >> > one of the expansions contained a command substitution, the exit >> > status of the command is the exit status of the last command >> > substitution performed. If there were no command substitutions, >> > the command exits with a status of zero. >> > >> > In one of your examples, a "local" command is generated using a command >> > substitution, so the exit status is that of the local command. In the >> > other, only an assignment is done, which is not a command, so the exit >> > status is that of the last command substitution. >> > >> > Dale >> > >> >> >> -- >> >> >> -- >> >> Laurent Picquet >> >> 16, Hunters Chase >> >> South Godstone >> >> RH98HR >> >> England >> >> tel: 07882 356 104 >> > > > -- > Oğuz > >