about_Operator_Precedence

Rövid leírás

A PowerShell-operátorok sorrendben való felsorolása.

Hosszú leírás

A PowerShell-operátorokkal egyszerű, de hatékony kifejezéseket hozhat létre. Ez a témakör az operátorokat elsőbbségi sorrendben sorolja fel. Az elsőbbségi sorrend az a sorrend, amelyben a PowerShell kiértékeli az operátorokat, ha több operátor is megjelenik ugyanabban a kifejezésben.

Ha az operátorok elsőbbséget élveznek, a PowerShell balról jobbra értékeli őket, ahogy azok megjelennek a kifejezésben. A kivételek a hozzárendelési operátorok, az öntött operátorok és a negation operátorok (!, -not, ), -bnotamelyek kiértékelése jobbról balra történik.

A házak, például zárójelek használatával felülbírálhatja a szabványos sorrendet, és kényszerítheti a PowerShellt, hogy értékelje ki egy kifejezés zárt részét a nem lezárt rész előtt.

Az alábbi listában az operátorok a kiértékelés sorrendjében jelennek meg. Az ugyanazon a sorban vagy ugyanabban a csoportban lévő operátorok elsőbbséget élveznek.

Az Operátor oszlop felsorolja az operátorokat. A Referencia oszlop felsorolja azt a PowerShell-súgótémakört, amelyben az operátor leírása szerepel. A témakör megjelenítéséhez írja be a következőt get-help <topic-name>:

OPERÁTOR HIVATKOZÁS
$() @() () @{} about_Operators
. ?. (taghozzáférés) about_Operators
:: (statikus) about_Operators
[0] ?[0] (index operátor) about_Operators
[int] (öntött operátorok) about_Operators
-split (unary) about_Split
-join (unary) about_Join
, (vessző operátor) about_Operators
++ -- about_Assignment_Operators
! -not about_Logical_Operators
.. (tartomány operátora) about_Operators
-f (formátum operátor) about_Operators
- (unary/negatív) about_Arithmetic_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators

Az operátorok alábbi csoportja egyenlő elsőbbséget élvez. A kis- és nagybetűk megkülönböztetése és a kis- és nagybetűk megkülönböztetése azonos sorrendben történik.

OPERÁTOR HIVATKOZÁS
-split (bináris) about_Split
-join (bináris) about_Join
-is -isnot -as about_Type_Operators
-eq -ne -gt -ge -lt -le about_Comparison_Operators
-like -notlike about_Comparison_Operators
-match -notmatch about_Comparison_Operators
-in -notIn about_Comparison_Operators
-contains -notContains about_Comparison_Operators
-replace about_Comparison_Operators

A lista itt folytatódik a következő operátorokkal, sorrendben:

OPERÁTOR HIVATKOZÁS
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor about_Logical_Operators

A következő elemek nem valódi operátorok. Ezek a PowerShell parancsszintaxisának részei, nem pedig a kifejezés szintaxisának. A hozzárendelés mindig az utolsó művelet, amely történik.

SZINTAXIS HIVATKOZÁS
. (pont-forrás) about_Operators
& (hívás) about_Operators
? <if-true> : <if-false> (Ternáris operátor) about_Operators
?? (nullszén-operátor) about_Operators
| (folyamatüzemeltető) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
&& || (folyamatlánc-operátorok) about_Operators
= += -= *= /= %= ??= about_Assignment_Operators

Példák

Az alábbi két parancs az aritmetikai operátorokat és a zárójelek használatát mutatja be, amelyek arra kényszerítik a PowerShellt, hogy először kiértékelje a kifejezés zárt részét.

PS> 2 + 3 * 4
14

PS> (2 + 3) * 4
20

Az alábbi példa lekéri a csak olvasható szövegfájlokat a helyi könyvtárból, és menti őket a $read_only változóba.

$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}

Ez egyenértékű az alábbi példával.

$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )

Mivel a folyamatüzemeltető (|) nagyobb elsőbbséget élvez, mint a hozzárendelési operátor (=), a Get-ChildItem parancsmag által lekért fájlokat a rendszer szűrés céljából elküldi a Where-Object parancsmagnak, mielőtt hozzárendeli őket a $read_only változóhoz.

Az alábbi példa azt mutatja be, hogy az index operátor elsőbbséget élvez az öntött operátorral szemben.

Ez a kifejezés három sztringből álló tömböt hoz létre. Ezután az index operátort használja 0 értékkel a tömb első objektumának kiválasztásához, amely az első sztring. Végül sztringként öntötte el a kijelölt objektumot. Ebben az esetben a szereposztásnak nincs hatása.

PS> [string]@('Windows','PowerShell','2.0')[0]
Windows

Ez a kifejezés zárójelekkel kényszeríti a leadási műveletet az index kiválasztása előtt. Ennek eredményeképpen a teljes tömb (egyetlen) sztringként lesz öntött. Ezután az index operátor kiválasztja a sztringtömb első elemét, amely az első karakter.

PS> ([string]@('Windows','PowerShell','2.0'))[0]
W

A következő példában, mivel a -gt (nagyobb) operátor nagyobb elsőbbséget élvez a -and (logikai ÉS) operátornál, a kifejezés eredménye a FAL Standard kiadás.

PS> 2 -gt 4 -and 1
False

Ez egyenértékű a következő kifejezéssel.

PS> (2 -gt 4) -and 1
False

Ha a -and operátor nagyobb elsőbbséget élvez, a válasz IGAZ lesz.

PS> 2 -gt (4 -and 1)
True

Ez a példa azonban az operátorok elsőbbsége kezelésének fontos elvét mutatja be. Ha egy kifejezés nehezen értelmezhető, zárójelek használatával kényszerítse ki a kiértékelési sorrendet, még akkor is, ha az alapértelmezett operátori elsőbbséget kényszeríti ki. A zárójelek egyértelművé teszik a szándékait azok számára, akik olvassák és karbantartják a szkripteket.

Lásd még