On Thu, May 17, 2007 at 03:40:15AM +0000, Tyler Smith wrote:
> On 2007-05-17, Bob McGowan <[EMAIL PROTECTED]> wrote:
> >
> > Some general comments, mostly aimed at making your code cleaner without 
> > changing what it does.
> >
> > First, both 'echo' and 'printf' put their results on standard out.  Your 
> > call of 'printf' is inside command substitution, so its STDOUT becomes 
> > the command line for 'echo' which just prints to its STDOUT.  Why the 
> > double print out?  Just do:
> >
> > lab_let=$(printf "\\x$(echo $lab_num)")
> >
> > Next, the 'echo $lab_num' is not needed, $lab_num can stand alone:
> >
> > lab_let=$(printf "\\x$lab_num")

another thing to remember is you can enclose your variable names in {} so you 
could do something like 

lab_let=$(printf "\\x${lab_num}Moretext")

> >
> > And, the double quotes escape things, too, so the double backslash is 
> > not needed:
> >
> > lab_let=$(printf "\x$lab_num")
> >
> 
> Thank you for this! I started out with something a little more
> complicated, without the variable, trying to insert the hex character
> directly into another command. And my testing required that I use a
> form that would print something to the command line. I got very worked
> up trying to sort out the syntax, and obviously over-did it.
> 
> 
> > Then, the line where you increment lab_num can also be simpler.  In bash 
> > the $((...)) alone on a line will replace itself with the result 
> > (command substitution, again).  But, leave off the leading $ sign, and 
> > it just does the increment:
> >
> > ((lab_num++))
> 
> Oh, great, thanks. I added the echo to stop getting the complaint
> about unknown command, but this is better.
> 
> >
> > So, cut and pasted from a bash shell:
> >
> > $ lab_num=41
> > $ lab_let=$(printf "\x$lab_num")
> > $ echo $lab_let
> > A
> > $ ((lab_num++))
> > $ lab_let=$(printf "\x$lab_num")
> > $ echo $lab_let
> > B
> 
> Much improved!
> 
> >
> > This would need two loops, the outer to increment the 'tens' digit, the 
> > inner to increment the 'ones' digit, but it would do the trick.  For 
> > example:
> >
> > x=(0 1 2 3 4 5 6 7 8 9 A B C D E F)
> >
> 
> I knew there was an array form in bash, but I couldn't find it. I'm
> working from the O'Reilly book classic shell scripting, and the only
> reference to arrays is in relation to awk scripts. This is a big help.
> 
> Thanks alot!
> 
> Tyler
> 
> 
> -- 
> To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
> with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
> 
> 

Attachment: signature.asc
Description: Digital signature

Reply via email to