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 O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.