On 5/19/11 6:09 PM, Eric Blake wrote: > [adding bug-bash] > > On 05/16/2011 07:23 PM, Wayne Pollock wrote: >> (While cleaning up the standard for case statement, consider that it is >> currently >> unspecified what should happen if an error occurs during the expansion of the >> patterns; as expansions may have side-effects, when an error occurs on one >> expansion, should the following patterns be expanded anyway? Does it depend >> on >> the error? It seems reasonable to me that any errors should immediately >> terminate >> the case statement.) > > Well, that's rather all over the place, but yes, it does seem like bash > was the buggiest of the lot, compared to other shells. Interactively, I > tested: > > readonly x=1 > case 1 in $((x++)) ) echo hi1 ;; *) echo hi2; esac > echo $x.$? > > bash 4.1 printed: > bash: x: readonly variable > hi1 > 1.0 > which means it matched '1' to $((x++)) before reporting the failure > assign to x, and the case statement succeeded. Changing the first "1" > to any other string printed hi2 (the * case).
Thanks for the report. This was an easy fix. The variable assignment error was actually handled correctly, the expression evaluation code just didn't pay enough attention to the result. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/