bug-bash
[Top][All Lists]
Advanced

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

Re: Number with sign is read as octal despite a leading 10#


From: Chet Ramey
Subject: Re: Number with sign is read as octal despite a leading 10#
Date: Tue, 10 Jul 2018 11:09:22 -0400
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.9.0

On 7/10/18 6:44 AM, Ilkka Virta wrote:
> I think the problematic case here is when the number comes as input from
> some program, which might or might not print a leading sign or leading
> zeroes, but when we know that the number is, in any case, decimal.
> 
> E.g. 'date' prints leading zeroes, which is easy enough to handle:
> 
> hour=$(date +%H)
> 
> hour=${hour#0}         # remove one leading zero, or
> hour="10#$hour"        # make it base-10
> 
> The latter works even with more than one leading zero, but neither works
> with a sign. So, handling numbers like '-00159' gets a bit annoying:

That is not an integer constant. Integer constants don't begin with `-'.
Bash uses the same definition for constants as the C standard, with the
addition of the `base#value' syntax.

Since the `10#' notation is sufficient to deal with leading zeroes if you
want to force decimal, you only have to remove a leading unary plus or
minus.

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/



reply via email to

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