Een optionele context kan worden gebruikt in gebruikersmacro's, waardoor de standaardwaarde kan worden overschreven door een contextspecifieke waarde.
De context wordt toegevoegd aan de naam van de macro; de syntaxis hangt af van of de context een statische tekstwaarde is:
of een reguliere expressie:
Merk op dat een macro met een context van reguliere expressie alleen kan worden gedefinieerd in de configuratie van gebruikersmacro's. Als het voorvoegsel regex:
ergens anders wordt gebruikt als gebruikersmacro-context, zoals in een triggervoorwaarde, wordt het behandeld als een statische context.
Het aanhalen van de context is optioneel (zie ook belangrijke opmerkingen).
Voorbeelden van macrocontext:
Voorbeeld | Beschrijving |
---|---|
{$LOW_SPACE_LIMIT} |
Gebruikersmacro zonder context. |
{$LOW_SPACE_LIMIT:/tmp} |
Gebruikersmacro met context (statische string). |
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} |
Gebruikersmacro met context (reguliere expressie). Hetzelfde als {$LOW_SPACE_LIMIT:/tmp} . |
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} |
Gebruikersmacro met context (reguliere expressie). Komt overeen met alle strings die beginnen met /var/log/. |
Gebruikersmacro's met context kunnen worden gedefinieerd om flexibelere drempelwaarden in triggerevaluaties te bereiken (gebaseerd op de waarden die zijn opgehaald door laagniveaudetectie). Bijvoorbeeld, u kunt de volgende macro's definiëren:
Vervolgens kan een macro voor laagniveaudetectie worden gebruikt als macrocontext in een triggervoorbeeld voor de detectie van gemonteerde bestandssystemen:
Na de detectie zullen verschillende lage-diskruimte-drempels van toepassing zijn in triggerevaluaties, afhankelijk van de gedetecteerde koppelingspunten of bestandssysteemtypes. Probleemgebeurtenissen worden gegenereerd als:
Maak geen verschillende contextmacro's die overeenkomen met dezelfde tekenreeks om ongedefinieerd gedrag te voorkomen.
Technisch gezien wordt macrocontext gespecificeerd met regels die vergelijkbaar zijn met de parameters van item sleutels, behalve dat macrocontext niet wordt geparseerd als meerdere parameters als er een ,
-teken is:
"
als de context een }
-teken bevat of begint met een "
-teken. Aanhalingstekens binnen geciteerde context moeten worden ontsnapt met het \
-teken.\
-teken zelf wordt niet ontsnapt, wat betekent dat het onmogelijk is om een geciteerde context te hebben die eindigt met het \
-teken - de macro {$MACRO:"a:\b\c\"} is ongeldig.De volgende macro's zijn allemaal gelijkwaardig, omdat ze dezelfde context hebben: {$MACRO:A}, {$MACRO: A} en {$MACRO:"A"}. Dit staat in contrast met itemsleutels, waar 'key[a]', 'key[ a]' en 'key["a"]' semantisch hetzelfde zijn, maar verschillend voor het doel van uniciteit.