Es pot emprar un context opcional a macros d'usuari, permetent que el valor predeterminat es substitueixi per un valor específic del context.
El context s'afegeix al nom de la macro; la sintaxi varia en funció de si el context és un valor de text estàtic:
o una expressió regular:
Tingueu en compte que una macro amb un context d'expressió regular només es pot definir a la configuració de la macro d'usuari. Si el prefix regex:
s'empra en un altre lloc com a context de macro d'usuari, com ara en una expressió de trigger, es tractarà com un context estàtic.
La citació contextual és opcional (veieu també les notes importants).
Exemples de macrocontext:
Exemple | Descripció |
---|---|
{$LOW_SPACE_LIMIT} |
Macro d'usuari sense context. |
{$LOW_SPACE_LIMIT:/tmp} |
Macro d'usuari amb context (cadena estàtica). |
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} |
Macro d'usuari amb context (regex). Igual que {$LOW_SPACE_LIMIT:/tmp} . |
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} |
Macro d'usuari amb context (regex). Coincideix amb totes les cadenes amb el prefix /var/log/. |
Es poden definir macros d'usuari amb context per aconseguir llindars més flexibles en expressions de triggers (basades en valors recuperats per descoberta de baix nivell). Per exemple, podeu definir les macros següents:
Tot seguit, es pot emprar una macro de descoberta de baix nivell com a context de macro en un prototip de trigger per a la descoberta del sistema de fitxers muntat:
Després de la descoberta, s'aplicaran diferents llindars d'espai sota els triggers en funció dels punts de muntatge o dels tipus de sistema de fitxers descoberts. Es generaran esdeveniments de problemes si:
No creeu macros de context diferents que coincideixin amb la mateixa cadena per evitar un comportament no definit.
Tècnicament, el context de la macro s'especifica mitjançant regles similars als paràmetres clau d'element, excepte que el context de la macro no s'analitzi com a paràmetres múltiples per haver-hi un caràcter ,
:
"
si el context conté un caràcter }
o comença amb un caràcter "
. Les cometes dins del context citat s'han d'escapar amb el caràcter \
.\
en si no s'escapa, la qual cosa significa que és impossible tindre un context entre cometes que acabi amb el caràcter \
- la macro {$MACRO:"a:\ b\c\"} és invàlid.Les macros següents són equivalents perquè tenen el mateix context: {$MACRO:A}, {$MACRO:A} i {$MACRO:"A"}. Això contrasta amb les claus d'element, on "clau[a]", "clau[a]" i "clau["a"]" són semànticament iguals, però diferents per a finalitats d'unicitat.