Scripting problem

Polytropon freebsd at edvax.de
Sun Oct 8 07:55:06 UTC 2017


On Sun, 08 Oct 2017 00:59:39 -0500, Paul Schmehl wrote:
> I'm writing a bash script to create a db backup and email it to me once a 
> day. I'm munged some parts to not reveal details
> 
> I'm having a problem with this line:
> 
> /usr/local/bin/mutt -s $SUBJECT -i $MESSAGE -a $FILENAME -- 
> pschmehl at tx.rr.com < /dev/null
> 
> Right before this line are these lines:
> MESSAGE="path/to/message.txt"
> ADDRESS="pschmehl at mydomain"
> SUBJECT="Today's db backup"
> 
> From the commandline this runs fine, but the script returns an error:
> 
> Error sending message, child exited 67 (User unknown.).
> Could not send the message.
> 
> The mail is sent, and when it's received, the subject line is Today's. When 
> I look in the maillog, mutt tried to send email to db at hostname and 
> backup at hostname.
> 
> I changed the subject to Backup, and the error goes away.

This proves you have a quoting problem. Enclose the parameters
in the mutt call in "...", like this:

	/usr/local/bin/mutt -s "$SUBJECT" -i "$MESSAGE" -a "$FILENAME" -- pschmehl at tx.rr.com < /dev/null

When the variables are being evaluated by the shell, the quotes
during assignment are removed, and you you get is

	/usr/local/bin/mutt -s Today's db backup -i path/to/message.txt -a /whatever/filename/there.is -- pschmehl at tx.rr.com < /dev/null

The unterminated ' is handled more or less gracefully, but it
probably interferes with mutt's address detection. You can
now easily recognize the problem.



> I'm running FreeBSD 10.3-RELEASE and the script is written in bash.

Do you have any reasons not to stick to default sh? Do you use
any features specific to bash?



> Why would mutt do this?

Well, actually mutt doesn't do it - it's the shell that just does
what you told it to. ;-)




-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...


More information about the freebsd-questions mailing list