A Bourn shell script I am trying to run isn't behaving like I
expected it to and I am not sure how to make it play nice.  There are
a bunch of DNS zone files that need the bottom 6 lines chopped off and
I hoped to do that with a while loop driven by the ls command.  In
order to loose the bottom 6 lines, one must count all the lines,
subtract 6 from that number and use the new value as a value for head.
The problem occurs in the way awk is producing output in the loop.
Here is the script:

#! /bin/sh
filechop ()  {
#This function takes one file at a time and removes the bottom 6 lines.
#Get a single numerical value stating how many lines are in the file.
zlength=`wc -l $zonename|awk '{print $1}'`
shortlength=$(($zlength - 6))
head -$shortlength $zonename >tmp.zone
mv tmp.zone $zonename
return 0
}
#main routine
while zonename=`ls *.zone`;do
filechop
done

        Things go quite wrong when awk produces a line of output
instead of one value per line which would drive the rest of the script.
I have tried putting parentheses around the line reading

zlength=`(wc -l $zonename)|awk '{print $1}'`

And, I have moved the right parenthesis to include the awk call, but
that changed nothing.

        Is there any way to get one value per iteration?

Thanks for any good ideas.

Martin McCormick WB5AGZ  Stillwater, OK 
OSU Information Technology Division Network Operations Group


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to