Bob Proulx wrote:
Richard Neill wrote:
b)Consistent with other cases, where bash does give warnings. For example:
$ X=$((3+078))
bash: 3+078: value too great for base (error token is "078")
$ echo $?
1
That is not really a comparable case. The problem there is that the
leading zero specifies an octal constant and the 8 cannot be converted
to octal. The "3+" part is just a distraction.
echo $((08))
bash: 08: value too great for base (error token is "08")
Bob
Are you sure this isn't comparable? After all, in both cases, the user
has submitted something to which bash cannot give a sensible answer. In
the integer-overflow case, bash simply returns the wrong answer, with no
warning. But in the octal case, bash (quite correctly, and helpfully)
prints a warning.
If bash were to be consistent, then it should display no error message
in the case of $((3+078)); it should either "Do what I mean" [evaluate
3 + 078 as 0103, treating 78 as 7 *8 + 8], or "Do something daft" [eg
evaluate as 073 (treating 8 as an integer-overflow in the units place,
which is not checked for)]
There's obviously an advantage to the user in being warned when an
integer overflow occurs; is there any possible downside (apart from a
couple of extra lines of code?
Richard
_______________________________________________
Bug-bash mailing list
Bug-bash@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-bash