Use $( and $) in Rules
The information in database maps is accessed in the RHS of rules. This is the basic syntax:
$(name key $)
The key
is looked up in the database map
whose symbolic name (declared with the K
configuration command, Section 23.2) is
name
. If the
key
is found, the entire expression,
including the $(
and $)
, is
normally replaced with the value returned for that
key
.[4] Any
suffix
, as specified with the
-a
switch (-a) in the
K
configuration declaration for
name
, is appended to the data. If the
key
is not found, the entire expression is
replaced with key
. If the $)
is
omitted, all tokens up to but excluding the tab and comment, or
end-of-line if there is no comment, are taken as the key. To
illustrate one use for $(
and
$)
, see the following rule:
R$- . uucp $: $(uucp $1.uucp $)
and the following K
command:
Kuucp hash /etc/mail/uucp
This associates the symbolic name uucp
with a
hash
-type file called
/etc/mail/uucp
. If the uucp
database contained entries such as these:
lady.uucp lady.localuucp sonya.uucp sonya.localuucp
a workspace of lady.uucp
would match the LHS, so
the RHS would look up $1.uucp
(thus,
lady.uucp
) in the uucp.db
database. Because lady.uucp
is found, the entire
$(
to $)
RHS expression is
replaced with lady.localuucp
from the database.
Any UUCP hosts other than lady
or
sonya
would not be found in the database, so the
RHS expression would become the original workspace, unchanged.
Note that the
entire RHS is prefixed with a $
:. This prevents
sendmail from retesting ...
Get Sendmail, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.