bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Error on arithmetic evaluation of `~0`.


From: konsolebox
Subject: Re: Error on arithmetic evaluation of `~0`.
Date: Sat, 29 Dec 2018 20:09:13 +0800

On Sat, Dec 29, 2018, 1:44 PM Bize Ma <address@hidden wrote:

> Chet Ramey (<address@hidden>) wrote:
>
> > On 12/23/18 12:01 PM, Bize Ma wrote:
> >
> {…}
>
> > > Both command line above should have printed "hello".
> >
> > No. 0 is the only valid subscript for a non-array variable. The
> difference
> > between bash and other shells that implement this feature is that bash
> > warns about negative subscripts.
> >
>
> If you say so: fine for me.
>
> It still irks me a little that a `${var[-1]}` isn't the "last value"
> (sometimes!, consistency?).
>

That consistency would demand that simple variables be treated exactly as
array variables, but they aren't. The consistent part here is that they
convert dynamically when indexed, and 0 is the only synonymous index if the
variable would have been an array. A different index would demand two step
conversion. And if bash would ever allow those inidices like the positive
ones, it would only be for the sake of convenience, but that shouldn't be
taken strictly.

If you want consistency, stop treating non-array variables as array
variables and write explicit declarations or conversions. Natural indices
are fine, but special non-generic ones that are clearly just for arrays are
not.


> I haven't seen that documented anywhere, though.
>

Read the source code so you would undestand that arrays and non-arrays are
different.

>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]