On Sat, Feb 12, 2011 at 11:57:08AM +0100, Ralf Goertz wrote: > > if [ $((i)) -lt 9 ] ; then echo ok; fi > bash: 08: value too great for base (error token is "08") > > Why is 08 not tried to be interpreted as octal when *numerically* compared > using test?
s/not // in your question, I assume. Because the $((...)) bit is done first, without any knowledge that there is a [ command around it. If your i variable is coming from a source that may or may not include leading zeroes (such as date(1)) then you have two choices: 1) Strip the leading zeroes. 2) Use 10#$i inside the arithmetic context to force base-10 interpretation.