On 2/21/06, G.Wolfe Woodbury <[EMAIL PROTECTED]> wrote: > On Tue, Feb 21, 2006 at 06:02:10PM -0500, Paul G. Szabady wrote: > > That's what I thought, but other non-octal combinations work. > > > > IE > > > > [EMAIL PROTECTED] paul]$ declare -i dirx=88 ; echo $dirx > > 88 > > [EMAIL PROTECTED] paul]$ > > The leading '0' digit trigger the octal interpretation. There are > special cases in the code for 09 but 08 seems to have escaped someone's > notice. The library spec says that 08 should be correctly interpreted. > > might be worth filing a bug with your distributions bug site.
Not sure which library spec you're talking about, but bash seems to be working as designed if it rejects a constant of 08, and if its accepting 09 then THAT's a bug. Bash on my Ubuntu/debian system doesn't like either 08 or 09 as an arithmethic literal. And I don't believe that it should. Here's the relevant paragraph from man bash: Constants with a leading 0 are interpreted as octal numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, numbers take the form [base#]n, where base is a decimal number between 2 and 64 representin the arithmetic base, and n is a number in that base. If base# is omitted, then base 10 is used. The digits greater than 9 are represented by the lowercase letters, the uppercase letters, @, and _, in that order. If base is less than or equal to 36, lowercase and uppercase letters may be used inter‐changeably to represent numbers between 10 and 35. So here's a way to get around the problem: [EMAIL PROTECTED]:~$ declare -i dirx=10#$(date +%V) [EMAIL PROTECTED]:~$ echo $dirx 8 declare -i dirx=10#$(date +%V) -- TriLUG mailing list : http://www.trilug.org/mailman/listinfo/trilug TriLUG Organizational FAQ : http://trilug.org/faq/ TriLUG Member Services FAQ : http://members.trilug.org/services_faq/
