Greetings,
I know this isn't explicitly a Debian problem, but I have seen many
really smart Bash programmers on this list so I figured this was a good
place to ask. :-)
$ bash --version
GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu
$ cat /etc/debian_version
7.5
I have a Bash script I am working on where I am getting (supposedly) a
two-digit number from the user. I handle all the logic to ensure I am
getting two digits and not >2, letters, characters, ect in a different
function. By the time I get to this code in my script, I am assuming it
is a one or two digit number. Because I need a two digit number I am
assuming that my user may have just input a single digit for the first
nine numbers without a leading zero. I am doing this in my code like:
verifiednum=`printf %02d $uservar`
This works really well when they enter only a single digit or 01-07.
However, on 08 or 09, this fails.
$ cat test.sh
#!/bin/bash -
printf %02d 07 #This Works.
echo ""
printf %02d 8 #This Works.
echo ""
printf %02d 08 #This doesn't.
echo ""
printf %02d 9 #This Works.
echo ""
printf %02d 09 #This doesn't.
echo ""
$ ./test.sh
07
08
./test.sh: line 6: printf: 08: invalid octal number
00
09
./test.sh: line 10: printf: 09: invalid octal number
00
I almost want to think that this is a bug, but because it seems to be
thinking it is an octal number (which technically it is I suppose :). I
am guessing that it just doesn't like what I am doing with printf but I
am a bit baffled as to why it only croaks on 08 and 09.
1) Does anyone know what is wrong here?
2) Is there a better way of solving this issue?
Thanks!
~Stack~