Scripting problem

Paul Schmehl pschmehl_lists at tx.rr.com
Sun Oct 8 16:54:27 UTC 2017


--On October 8, 2017 at 9:54:13 AM +0200 Polytropon <freebsd at edvax.de> 
wrote:

> 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
>

Thanks. I was unaware of this.

> 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?
>

None other than I've always written bash scripts.

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

I see that now. Thanks for educating me.

Paul Schmehl, Retired
As if it wasn't already obvious, my opinions
are my own and not those of my employer.
*******************************************
"It is as useless to argue with those who have
renounced the use of reason as to administer
medication to the dead." Thomas Jefferson
"There are some ideas so wrong that only a very
intelligent person could believe in them." George Orwell



More information about the freebsd-questions mailing list