Net als veel andere programmeertalen heeft PowerShell verschillende vergelijkingsoperatoren. Echter, in tegenstelling tot andere talen, kunnen deze vergelijkingsoperatoren er een beetje vreemd uitzien. In plaats van ==
gebruik je eq
. In plaats van <>
heb je ne
. Dit kan verwarrend zijn voor nieuwkomers. Laten we de PowerShell like-operator en andere vergelijkingsoperatoren in dit artikel bekijken.
Testen op gelijkheid met de eq
en ceq
operatoren
Om te controleren of het ene object gelijk is aan een ander object in PowerShell, gebruik je de eq
operator. De eq
operator vergelijkt eenvoudige objecten van vele typen, zoals strings, boolean waarden, integers, enzovoort. Wanneer deze gebruikt wordt, retourneert de eq
operator een boolean waarde van True
of False
afhankelijk van het resultaat.
De -eq
operator heeft twee waarden nodig om te vergelijken. Laten we zeggen dat je een string toewijst aan een variabele genaamd $string
. Je wilt deze variabele vergelijken met de string waarde "PowerShell"
om te controleren of ze gelijk zijn.
In het volgende voorbeeld zie je dat we de waarde PowerShell
toewijzen aan de variabele $string
. Vervolgens vergelijkt het voorbeeld met behulp van de operator eq
de waarde van $string
met de string powershell
. Makkelijk genoeg, toch? Maar wacht, ze zijn niet echt hetzelfde.
Merk op dat
=
een toekenningsoperator is en GEEN vergelijkingsoperator. Je kunt=
niet gebruiken om één waarde met een andere te vergelijken in PowerShell.
Testen van hoofdlettergevoeligheid met de operator ceq
In het bovenstaande voorbeeld, let op hoe eq
een boolean-waarde True
retourneert, zelfs wanneer de string niet exact hetzelfde is. Dit gedrag komt omdat de operator eq
hoofdletteronafhankelijk is. Om te testen op hoofdlettergevoelige gelijkheid, gebruik je de operator ceq
. De operator ceq
is precies hetzelfde als eq
, met uitzondering van hoofdlettergevoeligheid.
Je kunt een voorbeeld zien van het gebruik van ceq
in de volgende codefragment. Let nu op het hoofdlettergevoelige verschil dat PowerShell ziet.
Testen op ongelijkheid met de operators ne
en cne
Net zoals eq
en ceq
testen op gelijkheid, heeft PowerShell een paar operators die het tegenovergestelde doen, genaamd ne
en cne
. Net als hun tegenhangers voeren deze twee operators dezelfde bewerking uit, maar dan het tegenovergestelde.
Testen op items in een verzameling
Meestal worden de operators eq
en ceq
gebruikt voor scalars of enkele waarden zoals strings, integers en booleaanse waarden. Maar deze operators kunnen ook exemplaren van specifieke waarden vinden die binnen een verzameling voorkomen, zoals een array.
Let op het volgende voorbeeld waarin we een array met 12 integers maken. Misschien wil je alle exemplaren in die array vinden die gelijk zijn aan het getal 9. Geen probleem, gebruik de eq
operator op de array om alle exemplaren van de vergeleken integer terug te krijgen.
Testen of verzamelingen waarden bevatten
Aangezien je zojuist hebt geleerd om de eq
operator te gebruiken om exemplaren in arrays te vinden, laten we een stap verder gaan en de “bevatting” operators introduceren. Deze operators zijn contains
, notcontains
, in
en notin
. Deze operators retourneren een booleaanse waarde True
of False
als een verzameling een exemplaar bevat of niet.
Bekijk het volgende voorbeeld. In dit voorbeeld maken we een array met negen integers. Als je een eenvoudig Ja/Nee antwoord wilt op de vraag of die array een bepaalde integer bevat, kun je dat krijgen met behulp van contains
of notcontains
.
Op dezelfde manier heb je de operators in
en notin
. Deze operators zijn bijna identiek aan contains
en notcontains
, met één uitzondering: de te vergelijken waarde staat aan de linkerkant in plaats van aan de rechterkant.
Testen van “Groter dan” met de gt
en ge
operators
Wat gebeurt er als je moet testen of een getal (een geheel getal) groter is dan een ander getal of misschien groter dan of gelijk aan een ander getal? Dan gebruik je de gt
en ge
operatoren. Deze operatoren vergelijken gehele getallen.
Net als de andere operatoren, geven deze operatoren booleanwaarden True
of False
terug, afhankelijk van of het ene gehele getal groter is dan het andere. Beide operatoren testen of het linker gehele getal groter is dan of groter dan of gelijk aan het rechter gehele getal.
In het onderstaande voorbeeld kun je zien hoe elke operator zich gedraagt.
Vergelijkbaar met de eq
operator waarmee je instanties in collecties kunt vinden, kun je hetzelfde doen met de ge
en gt
operatoren. PowerShell doorzoekt elk item in een collectie en vergelijkt elke waarde met degene die je hebt opgegeven. Je kunt hieronder een goed voorbeeld hiervan zien.
Het testen van “kleiner dan” met de lt
en le
operatoren
Vergelijkbaar met de gt
en ge
operatoren, voeren de lt
en le
operatoren dezelfde functie uit maar tegenovergesteld. De lt
en le
operatoren vergelijken twee waarden en testen of het gehele getal aan de linkerkant kleiner is dan of kleiner dan of gelijk is aan het gehele getal aan de rechterkant.
In het onderstaande voorbeeld kun je zien dat dezelfde functionaliteit van het vergelijken van elke waarde in een collectie precies hetzelfde werkt als gt
en ge
.
Overeenkomsten op basis van wildcards met de PowerShell Like-operator
Tot nu toe heb je geleerd hoe je 1:1 overeenkomsten kunt uitvoeren. Alle tot nu toe gebruikte operators vergeleken één geheel getal met een ander, maar PowerShell heeft nog een trucje achter de hand. Je kunt waarden ook vergelijken op basis van wildcards of asterisken.
Stel dat je slechts een paar tekens van een string kent. Je kunt niet eq
gebruiken omdat eq
vereist dat je de hele string kent. Door de PowerShell-like operator te gebruiken, hoef je de hele string niet te kennen. Om te testen of een waarde lijkt op een andere, kun je het deel dat je niet kent vervangen door een wildcard.
Net als bij andere operators kan deze functionaliteit ook worden toegepast op verzamelingen.
Hieronder zie je een voorbeeld van de PowerShell-like operator en zijn hoofdlettergevoelige tegenhanger, clike
.
De operator -notlike
retourneert boolean True
als er geen overeenkomst is gevonden en False
als er wel een overeenkomst is. In het geval van het gebruik ervan tegen een verzameling, retourneert het alle andere waarden die niet overeenkomen met het opgegeven patroon aan de rechterkant van de -notlike
operator. Voeg voor hoofdlettergevoeligheid aan het patroon de -cnotlike
operator toe.
Vergelijken op basis van reguliere expressies
De PowerShell like operator en zijn familielid zijn handig, maar zodra je complexere overeenkomsten nodig hebt. Op dat moment kun je duiken in de diepe, donkere wereld van reguliere expressies (regex) . Met behulp van de match
en notmatch
operatoren, kun je extreem complexe string matching uitvoeren met regex.
Vergelijkbaar met de PowerShell like operator vergelijkt match
en zijn tegenovergestelde tegenhanger, notmatch
, twee strings en geeft een boolean True
of False
waarde terug. Ook, net als de andere operatoren, kan hetzelfde gedrag worden toegepast voor een collectie zoals het onderstaande voorbeeld laat zien.
Samenvatting
In dit artikel heb je geleerd over de PowerShell like operator en vele anderen en hoe je elke operator kan gebruiken voor enkele waarden en collecties. Je hebt gezien hoe de output verschilt op basis van de operator en of het een scalaire of collectie is.
Bovendien heb je ook operatoren met hoofdlettergevoeligheid gezien, overeenkomst operatoren hoe te matchen op basis van reguliere expressie of wildcard, en containment operatoren om te testen of het object een specifieke waarde bevat of als een waarde bestaat in een specifiek object.
