[exim] Single quotes and transport_filter

Top Page
Delete this message
Reply to this message
Author: improve.ripeness774
Date:  
To: exim-users
Subject: [exim] Single quotes and transport_filter
Chapter 24 documents the transport_filter option. An example is given
where the argv vector for the command comes from an expansion:

transport_filter = '/bin/cmd${if eq{$host}{a.b.c}{1}{2}}'

This runs the command /bin/cmd1 if the host name is a.b.c, and
/bin/cmd2 otherwise. If double quotes had been used, they would have
been stripped by Exim when it read the option’s value. When the
value is used, if the single quotes were missing, the line would be
split into two items, /bin/cmd${if and eq{$host}{a.b.c}{1}{2}, and
an error would occur when Exim tried to expand the first one.

I have two problems grokking this:

- I can find no other place in the spec where it is specifically
explained what single quotes do, as opposed to double quotes.

- In Section 29.3 on pipe commands (which are supposedly expanded the
same way), there is this example:

    command = /some/path ${if eq{$local_part}{postmaster}{xx}{yy}}


    will not work, because the expansion item gets split between
    several arguments.  You have to write


    command = /some/path "${if eq{$local_part}{postmaster}{xx}{yy}}"


So why are double quotes OK here?

--
Ian