The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com



Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
read list of filenames from text file and remove these files in multiple directories fxvisions Shell Programming and Scripting 5 08-07-2008 03:59 PM
read list of filenames from text file, archive, and remove fxvisions Shell Programming and Scripting 5 03-20-2007 09:56 PM
read a part of filename from the list in the script happyv Shell Programming and Scripting 3 10-20-2006 09:58 AM
read a list one at a time nortypig Shell Programming and Scripting 7 08-27-2006 09:50 PM
list read only files using find vivekshankar UNIX for Dummies Questions & Answers 1 05-26-2005 04:47 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 11-18-2008
pinkgladiator pinkgladiator is offline
Registered User
  
 

Join Date: Oct 2008
Posts: 17
read from a file to a list

Hello there,

I have a file that contents a list of email address, and each is separated by new lines. I want to read the first email address into TO: filed and the rest into a list and goes to cc field. I plan to use mailx to send the email. I inserted the email addresses into an array, but what can I do to turn the array into a list, so I can pass it to mailx command? The script is working, but it prints list of cc one by one. That won't work for mailx since I need all of them in a list. Thanks!

#read email address line by line, the first line always goes to TO field
fname="/home/.../emailFile.txt"
cc[100]="" #list of cc receipients

exec<$fname
value=0

while read line
do
value=`expr $value + 1`;
if [ $value -eq 1 ]
then
headit=$line
echo "headit email is: $headit" #receipient email address, always the first line in the file
else
cc[$value]=$line
echo "it contacts email: ${cc[$value]}"
fi
done

#mailx command to send email with a text body, attachment, cc, bcc, and replying address,
echo "test" | cat - body.txt | mailx -a attachment.html -b "bcc@mail.com" -c "$cc" -s "test" -r "reply@mail.com" "$headit"
  #2 (permalink)  
Old 11-18-2008
zaxxon's Avatar
zaxxon zaxxon is offline Forum Staff  
Moderator
  
 

Join Date: Sep 2007
Location: Germany
Posts: 2,257
Use [ code ] and [ /code ] tags when posting logs, code etc., ty.

Code:
root@isau02:/data/tmp/testfeld> cat infile
a@some.net
b@some.net
c@some.net
d@some.net
root@isau02:/data/tmp/testfeld> V_TO=`head -1 infile`
root@isau02:/data/tmp/testfeld> echo $V_TO
a@some.net
root@isau02:/data/tmp/testfeld> V_CC=`awk 'NR > 1 {print}' infile`
root@isau02:/data/tmp/testfeld> echo $V_CC
b@some.net c@some.net d@some.net
When using the variables, maybe use "${VAR}" to make sure you get no troubles.
  #3 (permalink)  
Old 11-18-2008
Christoph Spohr Christoph Spohr is offline
Registered User
  
 

Join Date: Sep 2008
Posts: 205
Hi,

to read all emails into an array:

Code:
email=( $(cat file) )
Code:
TO=$email[1]
to convert the array to a list:

Code:
CC=$(for i in {2..${#email[@]}}; do printf "%s " ${email[$i]}; done)
Which iterates over the array starting at position 2 for the length of the array, the it prints the current array followed by a space but no line break. The result is passed to the variable CC. Now you have the TO in $TO and the CC in $CC.

HTH

Chris
  #4 (permalink)  
Old 11-18-2008
Christoph Spohr Christoph Spohr is offline
Registered User
  
 

Join Date: Sep 2008
Posts: 205
Hi,

there is a small error in there. It has to be:

cc=$(for i in {2..${#email[@]}}; do printf "%s, " ${email[$i]}; done

The comma was missing as you need a comma separated list of repicipients.

I don't use mailx but mutt. The following line does the trick for me:

echo test | mutt -s test -c "$cc" -- $to

HTH Chris
  #5 (permalink)  
Old 11-18-2008
pinkgladiator pinkgladiator is offline
Registered User
  
 

Join Date: Oct 2008
Posts: 17
Thanks for everyone's posts. I really appreciate it. Chris's code has not worked for me though, this is the output:

someone@mail.com[1]
{2..2}: syntax error: operand expected (error token is "{2..2}") #maybe because I only have two email address in the file. It is possible that the file only contents 1 or 2 email addresses.

Zaxxon's code worked for me. Thanks again for all the inputs.

Last edited by pinkgladiator; 11-18-2008 at 01:35 PM..
Sponsored Links
Closed Thread

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT -4. The time now is 09:09 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language translation by Google.
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0