On Tue, Aug 23, 2016 at 2:34 AM, Weshakie Löwe <wesha...@gmail.com> wrote:
> When storing the value of code executed in a subshell the return value is > always 0 if the variable is local. > > Code example: > > A(){ > local return_value="$(bash -c "exit 1")" > echo $? > } > > function A: returns 0 - even though obviously the return value is 1. > ``local'' itself is a command. So ``local var=value'' would usually return 0 because it _successfully_ assigns the value the the var. ``local'' would return non-zero when there's something wrong with the syntax. For example ``local invalid.var.name'' or ``readonly var=1; local var=2''. > > B(){ > return_value="$(bash -c "exit 1")" > echo $? > } > > function B: returns 1 - as expected, the only difference to function A > being not using a local variable to store the value. > Without ``local'', the value of $? would be changed by the $(...) part in the assignment. -clark > > > > Best regards, > > A happy bash user > > >