I have to write a script to send mails using unix shell scripts.
The following script allows me to have variable message body.
Is it possible to have a variable subject part in the code below?
#!/bin/bash
# Sending mail to remote user
sender="root@sped56.lss.emc.com"
receiver="root@sped56.lss.emc.com"
body="THIS IS THE BODY"
subj="THIS IS THE SUBJECT."
echo $body | mail $receiver -s "THIS IS THE SUBJECT" // this works fine
echo $body | mail $receiver -s $subj // ERROR - sends one mail with only
//"THIS" as subject and generates another error mail for the other three words
You forgot the quotes:
Note that you must use double quotes (otherwise, the variable won’t be expanded).
Now the question is: Why double quotes around
$subjand not$bodyor$receiver. The answer is thatechodoesn’t care about the number of arguments. So if$bodyexpands to several words,echowill just print all of them with a single space in between. Here, the quotes would only matter if you wanted to preserve double spaces.As for
$receiver, this works because it expands only to a single word (no spaces). It would break for mail addresses likeJohn Doe <doe@none.com>.