Re: bash scripting question
- From: Tyler Smith <tyler.smith@xxxxxxxxxxxxxx>
- Date: 17 May 2007 03:40:15 GMT
On 2007-05-17, Bob McGowan <bob_mcgowan@xxxxxxxxxxxx> 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")
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 debian-user-REQUEST@xxxxxxxxxxxxxxxx
with a subject of "unsubscribe". Trouble? Contact listmaster@xxxxxxxxxxxxxxxx
- Follow-Ups:
- Re: bash scripting question
- From: Bob McGowan
- Re: bash scripting question
- From: Alex Samad
- Re: bash scripting question
- References:
- bash scripting question
- From: Tyler Smith
- Re: bash scripting question
- From: Bob McGowan
- bash scripting question
- Prev by Date: Re: have 'liberated' your fonts yet?
- Next by Date: Re: Typing an '@' symbol on an Apple keyboard
- Previous by thread: Re: bash scripting question
- Next by thread: Re: bash scripting question
- Index(es):
Relevant Pages
|
|