Specify Numbered Substitution with $@
For more complex substitutions, V8
sendmail offers use of the
$@
operator in
the RHS in conjunction with the $(
and $)
expressions in
database maps.[341] There can be multiple $@
-prefixed text
s between the
key
and the $
: (if present) or the
$)
, where each
of the text
s may
itself be multiple rule-set expressions:
$(name key $@ text1 $@ text2 and text3 $: default $)
Each $@
text
expression is numbered by position (from left to
right):
$(name key $@ text1 $@ text2 $: default $) ↑ ↑ 1 2
In this numbering scheme the
key
is always number 0,
even if no $@
s
are listed.
These numbers correspond to literal %
digit
expressions in the
data portion of a database map. For example:
lady %0!%1@%2
When a lookup of the key
in
the RHS of the rule is successful, the returned
value is examined for %
digit
expressions. Each such expression is replaced by its
corresponding $@
text
from
the rule. In the case of the preceding database map,
%0
would be
replaced with lady
(the
key
), %1
with text1
, and %2
with text2
.
To illustrate, consider the earlier database entry and the following rule:
R$- @ $-.uucp $: $(uucp $2 $@ $1 $@ mailhost $: $1@$2.uucp $)
If the workspace contains the address
joe@lady.uucp, the LHS
matches. The RHS rewrites only once because it is
prefixed with the $
: operator. The expression between the
$(
and $)
causes the second
$-
from the LHS
(the $2
, the
key
) to be looked up in
the database whose symbolic name is uucp
. Because $2
references lady
from the workspace, ...
Get sendmail, 4th 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.