-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Hi,

I have a bash script with this line:

DIFF=$[ ($LOC_H - $HWC_H)*3600 + ($LOC_M - $HWC_M)*60 + ($LOC_S - $HWC_S) ]

to calculate a time difference in seconds. Well, when the seconds are "08" it fails:

[EMAIL PROTECTED]:~> echo $[ (00 - 00)*3600 + (21 - 21)*60 + (08 -08) ]
bash: (00 - 00)*3600 + (21 - 21)*60 + (08: value too great for base (error token is 
"08")

Why?


Notice that not all number combinations fail:

[EMAIL PROTECTED]:~> echo $[ (00 - 00)*3600 + (21 - 21)*60 + (01 -01) ]
0
[EMAIL PROTECTED]:~> echo $[ (00 - 00)*3600 + (21 - 21)*60 + (01 -07) ]
- -6
[EMAIL PROTECTED]:~> echo $[ (01 - 01)*3600 + (21 - 21)*60 + (01 -08) ]
bash: (00 - 00)*3600 + (21 - 21)*60 + (01 -08: value too great for base (error token is 
"08")


Obviously, it is thinking it is an octal number. How do I convince bash to use standard base ten math? Is there a prefix?

I get "08" out of cutting the seconds value from a time like "01:21:08"; removing the leading "0" is inconvenient, and absurd, IMO, and would take an inordinate length of coding.


I could do something like:

[EMAIL PROTECTED]:~> echo $[ (100 - 100)*3600 + (121 - 121)*60 + (109 - 108) ]
1

which gives correct values, but again, it is an absurd hack. There must be some prefix for decimal numbers... :-?


- -- Cheers,
       Carlos Robinson

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4-svn0 (GNU/Linux)

iD8DBQFHXfc6tTMYHG2NR9URAnGdAJ9RyyFeuKKaUkON2RJkhyZ5N1B34QCfREku
1Feb2xJl5wLmTikOrm/dyOc=
=R+io
-----END PGP SIGNATURE-----
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to