/bin/sh arithmetic doesn't seem to like leading 0 now

David Wolfskill david at catwhisker.org
Fri Sep 21 17:46:17 UTC 2012


On Fri, Sep 21, 2012 at 07:34:06PM +0200, Jilles Tjoelker wrote:
> ...
> > Is this intentional?
> 
> Yes, it was changed with r216547, December 2010.
> 
> This was done to avoid an inconsistency where constants starting with
> "0" and containing "8" or "9" were decimal, so something like
> $((018-017)) expanded to 3.

Ah; OK.

> There are indeed various cases where this inconsistency does not matter
> (because the numbers with leading zeroes do not exceed 10).

Sure.  Especially when working with "month numbers". :-}

> > (I can work around it -- e.g., by using sed to strip leading 0 from the
> > month number (since strftime() doesn't appear to have a format that
> > provides the value in a form that lacks the leading zero for values <
> > 10).  But I'd rather not do that if I don't need to.)
> 
> You can use  date +%-m  although it is not in POSIX.

Ah -- I see that now ("%-*   GNU libc extension....")

> With POSIX only, it is still possible to do it reasonably efficiently,
> for example $(( 1$(date +%m) - 100 )) or v=$(date +%m); v=${v#0}.
> ...

Thanks.

Peace,
david
-- 
David H. Wolfskill				david at catwhisker.org
Depriving a girl or boy of an opportunity for education is evil.

See http://www.catwhisker.org/~david/publickey.gpg for my public key.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20120921/758d6068/attachment.pgp


More information about the freebsd-stable mailing list