Sunteți luptă cu înțelegere PowerShell operatori de comparație ca eq
, ne
, ceq
și cne
. Dacă da, citiți mai departe.
venind dintr-un fundal de dezvoltare software prima instanță am avut un „Huh?”moment a fost când am văzut prima dată PowerShell este operatori de comparație eq
, ceq
, cne
, etc., Toate celelalte limbi au operatori de comparație, dar nu chiar ca PowerShell. Am fost folosit pentru a ==
și <>
.
nu numai că sintaxa arată complet diferit de limbajul de programare tipic, dar se comportă diferit atunci când se ocupă de compararea colecțiilor de valori.
este ceva care m-a atârnat cu adevărat când am învățat despre PowerShell, dar acum se pare că ol’ beer zicală; este un gust dobândit.,
să trecem pe scurt ce este un operator de comparație dacă nu sunteți familiarizat și să vă aruncați mai adânc în nuanțele pe care le introduce PowerShell. Înainte de mult timp, veți putea să folosiți operatori în scripturile PowerShell fără nicio problemă.după cum am menționat, toate limbajele de programare/scripting au operatori de comparație. În sensul lor cel mai de bază, operatorii de comparație sunt necesare pentru a evalua modul în care lucrurile diferite compara cu alte lucruri. Ele sunt folosite pentru a lua două obiecte și a vedea care este diferența (dacă există) între cele două obiecte.,
În cazul PowerShell, operatorii pot fi de asemenea utilizați pentru a găsi elemente în colecții de valori.
pentru acest post, voi trece peste operatorii de egalitate și modul în care PowerShell le folosește. Acestea sunt eq
și ne
cu cazul lor sensibile omologii ceq
și cne
. Pentru o listă completă puteți sări peste site-ul Technet sau pur și simplu utilizați Get-Help about_comparison_operators
în consola Powershell.,
PowerShell -EQ și -CEQ
Dacă aveți vreodată nevoie pentru a vedea dacă un obiect este egal cu un alt obiect trebuie să utilizați eq
(case-insensitive) sau ceq
(case sensitive) operatorii. Acești operatori testează valoarea fiecărei entități pe care doriți să o comparați.
când am început să învăț PowerShell, aș face în mod constant ceva de genul
$string = 'Adam'if ($string = 'Adam') { 'string is equal to Adam'}
în curând veți fi lovit suficient pentru a nu face asta. Semnul =
este un operator de atribuire, nu un operator de comparație., Nu puteți utiliza semnul =
pentru a compara o valoare cu alta.
modul corect de a face acest lucru este de a defini valoarea de verificat în partea stângă a expresiei și de a folosi operatorul eq
. Aici este un exemplu de eq
și ceq
operatori și modul în care acestea sunt utilizate.,
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.,
Acest lucru este bine și bun pentru valorile scalare (unice), dar puteți găsi, de asemenea, toate instanțele de valori particulare folosind acești operatori. De exemplu, utilizați PowerShell -eq operator pentru a filtra elementele într-o matrice:
Dacă ai o variabilă cu o colecție de valori cum ar fi o matrice puteți folosi eq
și ceq
pentru a găsi toate cazurile de valori în interiorul colecției.,
observați că a găsit toate instanțele întregului 9 pe care am încercat să le comparăm. Eu folosesc această metodă la îndemână tot timpul.
-NE și -CNE
Pe partea opusă, ați ne
și cne
. Ele sunt exact opusul eq
și ceq
dar afișa exact același comportament opus. Nu testează egalitatea, testează inegalitatea.
sper că acest lucru vă oferă o bună explicație a egalității operatori de comparație. Acest lucru într-adevăr mi-a închis ca un newbie și niciodată nu a făcut clic cu adevărat pentru mine până când am fost doar bătut în prezentarea de mesaje de eroare. Sper că această postare împiedică aceeași bătaie pe care am primit-o.