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