Dan Douglas wrote: > On Sunday, July 21, 2013 04:13:31 PM Chet Ramey wrote: >> (For what it's worth, I don't see a difference in the output no matter what >> the option order.) >> Chet > > What's the bug? I can't reproduce this and always get "xx" no mater the > option > order. ---- Yeah... you're both right.
it happened if you execute the statement a 2nd time, the 1st time set's up the 2nd time for success: function xx { typeset -gia foo=(1 2 NaN 3) echo "foo=\"${foo[@]}\"" } --- Executed the first time: > xx foo="1 2 NaN 3" 2nd time...(same func) > xx foo="1 2 0 3" > I always assumed the -i attribute doesn't get set until after assigning the > values, which is why: --- I don't think so. Not from the above. The first sets up an array outside the function composed of integers, so the 2nd time I execute the same, it gets put through the "integer strainer". The bug is that the "-i" isn't applied until after the array assignment is done.. which isn't the case for scalars: > declare -i v=xx > echo $v 0 i.e. -i delays it's property effect until after the array has been assigned which is why it works when you run it a 2nd time, but with scalars, it works the 1st time. Same thing happens with the "upper/lower case" attributes: > declare -la low=(aa BBB cCC Ddd) > echo ${low[@]} aa BBB cCC Ddd > declare -la low=(aa BBB cCC Ddd) > echo ${low[@]} aa bbb ccc ddd (no function needed).