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] > >
signature.asc
Description: Digital signature