Haben Sie Probleme mit dem Verständnis von PowerShell-Vergleichsoperatoren wie eq
, ne
, ceq
und cne
. Wenn ja, Lesen Sie weiter.
Aus einem Softwareentwicklungshintergrund Die erste Instanz hatte ich ein “ Huh?“moment war, als ich zum ersten mal PowerShell-Vergleichsoperatoren eq
, ceq
, cne
usw., Alle anderen Sprachen haben Vergleichsoperatoren aber nicht ganz wie PowerShell. Ich war an ==
und <>
gewöhnt.
Die Syntax sieht nicht nur völlig anders aus als Ihre typische Programmiersprache, sondern verhält sich auch beim Vergleich von Wertesammlungen anders.
Es ist etwas, das mich beim Lernen über PowerShell wirklich aufgehängt hat, aber jetzt scheint es wie das alte Bier-Sprichwort; es ist ein erworbener Geschmack.,
Lassen Sie uns kurz durchgehen, was ein Vergleichsoperator ist, wenn Sie nicht vertraut sind und tiefer in die Nuancen eintauchen, die PowerShell einführt. In Kürze können Sie Operatoren problemlos in Ihren PowerShell-Skripten verwenden.
Wie bereits erwähnt, haben alle Programmier – /Skriptsprachen Vergleichsoperatoren. In ihrem grundlegendsten Sinne sind Vergleichsoperatoren notwendig, um zu bewerten, wie verschiedene Dinge mit anderen Dingen verglichen werden. Sie werden verwendet, um zwei Objekte zu nehmen und zu sehen, was der Unterschied (falls vorhanden) zwischen diesen beiden Objekten ist.,
Im Fall von PowerShell können Operatoren auch verwendet werden, um Elemente in Wertesammlungen zu finden.
Für diesen Beitrag werde ich über die Gleichheitsoperatoren gehen und wie PowerShell sie verwendet. Dies sind eq
und ne
mit ihren Groß-und Kleinschreibung ceq
und cne
. Für eine vollständige Liste können Sie über die Technet-Site springen oder einfach Get-Help about_comparison_operators
in Ihrer Powershell-Konsole verwenden.,
PowerShell-EQ und-CEQ
Wenn Sie jemals sehen müssen, ob ein Objekt einem anderen Objekt entspricht, müssen Sie die Operatoren eq
(Groß-und Kleinschreibung) oder ceq
(Groß-und Kleinschreibung) verwenden. Diese Operatoren testen den Wert jeder Entität, mit der Sie vergleichen möchten.
Als ich anfing, PowerShell zu lernen, würde ich ständig so etwas tun
$string = 'Adam'if ($string = 'Adam') { 'string is equal to Adam'}
Sie werden bald genug geschlagen sein, um das nicht zu tun. Das Zeichen =
ist ein Zuweisungsoperator, KEIN Vergleichsoperator., Sie können das Zeichen =
nicht verwenden, um einen Wert mit einem anderen zu vergleichen.
Der richtige Weg, dies zu tun, besteht darin, den Wert zu definieren, der auf der linken Seite des Ausdrucks überprüft werden soll, und den Operator eq
zu verwenden. Hier ist ein Beispiel für die Operatoren eq
und ceq
und wie sie verwendet werden.,
Notice how eq
returned a boolean True
value when comparing our variable against adam
but ceq
returned a boolean False
value? This displays the case sensitivity difference between the two operators.,
Dies ist alles gut und gut für skalare (einzelne) Werte, aber Sie können auch alle Instanzen bestimmter Werte mit diesen Operatoren finden. Verwenden Sie beispielsweise den PowerShell-eq-Operator, um Elemente in einem Array zu filtern:
Wenn Sie eine Variable mit einer Sammlung von Werten wie einem Array haben, können Sie eq
und ceq
, um alle Instanzen von Werten in der Sammlung zu finden.,
Beachten Sie, dass alle Instanzen der Ganzzahl 9 gefunden wurden, mit der wir versucht haben, sie zu vergleichen. Ich benutze diese praktische Methode die ganze Zeit.
– NE und-CNE
Auf der gegenüberliegenden Seite haben Sie beide ne
und cne
. Sie sind genau das Gegenteil von eq
und ceq
, zeigen jedoch genau dasselbe Verhalten nur gegenüber. Sie testen nicht Gleichheit, sie testen Ungleichheit.
Ich hoffe, dies gibt eine gute Erklärung für die Gleichheitsvergleichsoperatoren. Das hat mich wirklich als Neuling aufgehängt und es hat nie wirklich für mich geklickt, bis ich nur durch Fehlermeldungen in die Einreichung geschlagen wurde. Ich hoffe, dieser Beitrag verhindert den gleichen Schlag, den ich erhalten habe.