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: Pierre Gaston
Subject: Re: Number with sign is read as octal despite a leading 10#
Date: Tue, 10 Jul 2018 19:16:33 +0300

On Tue, Jul 10, 2018 at 1:44 PM, Ilkka Virta <address@hidden> 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:
>
> $ num='-00159'
> $ num="${num:0:1}10#${num:1}"; echo $(( num + 1 ))
> -158
>
> And that's without checking that the sign was there in the first place.
>
>
> Something like that will probably not be too common, but an easier way to
> force any number to be interpreted in base-10 (regardless of leading
> zeroes) could be useful. If there is a way, I'd be happy to hear.



It's not too complicated to separate the sign from the number eg:

for num in 159 000159 +000159 -000159;do
   echo $((${num%%[!+-]*}10#${num#[-+]}))
done


reply via email to

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