Greg Wooledge wrote in <Y64mrP9da/wgv...@wooledge.org>: |On Fri, Dec 30, 2022 at 12:21:52AM +0100, Steffen Nurpmeso wrote: |> ..i want to reiterate the relation to what "human logic" expects. | |I'm a human, so I feel qualified to address this point. | |What I expect from a command like | |(( i += j += i += j )) | |is to get unpredictable results that have no relationship to anything |useful, because that code is complete rubbish. | |I can't even guess what the *intent* of the code is.
This is from a test script (of course). "i += i += i += i" seems to be equal to "i *= 8" or "i <<= 3" (of which only the second is something that i can grasp at a glance .. unless in good shape). Looking back, it arose out of the ashes of the test s I1=10 I2=20;p "<$((I1+=I2+=I1))>";e "<$I1><$I2>" which anything tested gets right. 'What tests are for. (Except in the car industry but that is off-topic.) By sheer luck many minds over several generations shared my point of view regarding what the outcome has to be so that i do not feel so lonely about it. Yeah, and it flows so much nicer. i1 += i2 += i1 += i2 i1 += i2, i2 += i1, i1 += i2 Digital, logical, liberal, yuck :) |I'm not optimistic enough to expect an error message, or even better, |an immediate termination of the shell. That would be *far* too useful |(because it would force the script's author to rewrite that code). Well in real life i have not yet encountered a bug in bash; as in, from working/"living" with it (for many years, all in all). (Maybe multibyte problems in bash 2, but that was long ago, and i am not even sure whether i relate that correctly. .inputrc hate.) Ciao, --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)