Összehasonlító operátorok

Az összehasonlítás műveletét végző összehasonlító operátorok  jelzésére a PowerShell alkotói nem a hagyományos jeleket (=, <, >, <>, !=, stb.) választották, hanem külön jelölést vezettek be, rögtön két különböző szériát a kis-nagybetű érzéketlen és érzékeny változatra:

Operátor

Leírás

 

Kis-nagybetű érzékeny operátor

Leírás

-eq  

egyenlő

 

-ceq  

egyenlő

-ne  

nem egyenlő

 

-cne  

nem egyenlő

-gt  

nagyobb 

 

-cgt  

nagyobb 

-ge  

nagyobb egyenlő

 

-cge  

nagyobb egyenlő

-lt  

kisebb

 

-clt  

kisebb

-le  

kisebb egyenlő

 

-cle  

kisebb egyenlő

Megjegyzés

„Érzéketlen” változatként használhatjuk az operátorok „i” betűs megfelelőit is: -ieq, ‑ine, -igt, stb., de ezek az alap változattal teljesen ekvivalensen működnek.

Értelemszerűen az „érzékeny” változatot elsődlegesen szövegek összehasonlításakor használjuk, de a számoknál se ad hibát alkalmazásuk. Nézzünk akkor néhány példát mindezek alkalmazására:

[79] PS I:\>1 -ceq 1

True

[80] PS I:\>1 -eq 2

False

[81] PS I:\>1 -eq 1

True

[82] PS I:\>1 -ceq 1

True

[83] PS I:\>"ablak" -eq "ABLAK"

True

[84] PS I:\>"ablak" -ceq "ABLAK"

False

[85] PS I:\>5 -gt 2

True

Sokat azt hiszem nem is kell magyarázni.

Talán azt érdemes megnézni, hogy a szövegeket hogyan tudom „nagyság” szempontjából összehasonlítani:

[86] PS I:\>"ablak" -gt "ajtó"

False

[87] PS I:\>"baba" -gt "ablak"

True

[88] PS I:\>"ablak" -lt "állat"

True

[89] PS I:\>"asztal" -lt "állat"

False

[90] PS I:\>"á" -lt "a"

False

[91] PS I:\>"ab" -cgt "Ab"

False

Látszik, hogy itt a területi beállításoknak megfelelő szótár-sorrend alapján dől el, hogy melyik sztring nagyobb a másiknál.

Vigyázat! A PowerShell összehasonlítás során is végez automatikus típuskonverziót:

[1] PS I:\>"1234" -eq 1234

True

[2] PS I:\>1234 -eq "1234"

True

Persze nem mindenkor tud okos lenni, ha nagyon akarjuk, akkor átverhetjük:

[3] PS I:\>"0123" -eq 123

False

Ugye itt a 0-val kezdődő, idézőjelek közé tett szám esetén azt tartja valószínűbbnek, hogy ez szöveg, és akkor a jobb oldalon levő részt is szöveggé konvertálja magában, márpedig a „0123” nem egyenlő „123”-mal.

Nézzük meg, hogy vajon tömbök esetében hogyan működnek ezek az összehasonlító operátorok?

[10] PS I:\>1,2,3,4,1,2,3,1,2 -eq 1

1

1

1

[11] PS I:\>1,2,3,4,1,2,3,1,2 -eq 2

2

2

2

[12] PS I:\>1,2,3,4,1,2,3,1,2 -lt 3

1

2

1

2

1

[13] PS I:\>1,2,3,4,1,2,3,1,2 -eq 4

4

[14] PS I:\>1,2,3,4,1,2,3,1,2 -eq 5

Hoppá! Az első, amit láthatunk tömbök esetében, hogy nem True vagy False értéket kapunk, hanem azokat az elemeket, amelyekre igaz az adott összehasonlító művelet. Sőt! Ahogy a [14]-es promptban is látható, ha nincs egyezés, akkor sem kapunk False-t, hanem „semmi” a válasz.

Ha a jobb oldalon van tömb, akkor nem igazán kapunk egyenlőséget semmilyen esetben sem:

[19] PS I:\>(1,2),3 -eq 1,2

[20] PS I:\>1,2 -eq 1,2

[21] PS I:\>1 -eq 1,2

False



Word To HTML Converter