Scripting problem

Polytropon freebsd at
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 < /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 < /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/ -- pschmehl at < /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. ;-)

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

More information about the freebsd-questions mailing list