Title: awk and ksh question

Hello everyone,

I'm trying to awk through a text file and use that with a passed-in message to send email.  Here's an example of my text file:

# DBA's on call
[EMAIL PROTECTED]    # Lisa pager
[EMAIL PROTECTED]        # Lisa email

Here's my awk statement, which works properly

awk '!/^#/ {print $1}' filename.txt

prints the first entry in each file and skips any lines starting with #.

So I put it in a loop.  I don't quite understand all the syntax here, I'm pulling the exact syntax out of Steve Adams'  database check script. 

--
for PAGER in ${*-$(awk '!/^#/ {print $1}' dba_oncall.txt)}
do

print $PAGER

done
--
Works fine.


Now when I try to pass in a parameter in $1 (which I mean to be the email message), awk grabs it and the script no longer works.  Like this

--
export FILE=$1

print File is $FILE

for PAGER in ${*-$(awk '!/^#/ {print $1}' dba_oncall.txt)};
do

print $PAGER

done
--

This prints the name of the file in both print statements, before and inside the loop.  What am I doing wrong? 


Also if anyone can explain in a nutshell what the ${} means (I think it means consider the results as a variable) and the * and - and $() means in the for/do loop syntax I would be grateful.  I'm leafing through my ksh book but I think this is several specific functions all slapped together.

Thanks to anyone that can help pull my head out of the sand...

Lisa Koivu
Oracle Database Administrator
Fairfield Resorts, Inc.
5259 Coconut Creek Parkway
Ft. Lauderdale, FL, USA  33063
Office: 954-935-4117 
Fax:    954-935-3639
Cell:    954-683-4459

Reply via email to