On Tuesday, August 06, 2013 09:20:38 AM Andreas Schwab wrote: > DJ Mills <danielmil...@gmail.com> writes: > > > I still don't see that; > > Go strictly from left to right.
How do you assign something that hasn't been evaluated yet? Evaluating the expression on the RHS is an absolute prerequisite to evaluating the assignment itself. (x += x) = 1 is nonsense. It evaluates to 0 = 1. We know that the shell doesn't simply flatten the expression in the case of indirection. y='1 +'; ((x = y 1)) is invalid. Therefore it must evaluate full expressions as it references them. If you have x=0 y=x+=x let y=1 and try to evaluate y first, y evaluates to x+=x which evaluates to 0 and the overall expression is invalid again. I've also already proven that at least in ksh it goes right to left, because if you define a setter property to trigger a side-effect for each variable, the RHS fires before the LHS of the +=. There's just no amount of mind-bending I can think of that could make evaluating the += first produce anything other than an error. -- Dan Douglas