about_Operator_Precedence

Kısa açıklama

PowerShell işleçlerini öncelik sırasına göre listeler.

Uzun açıklama

PowerShell işleçleri basit ama güçlü ifadeler oluşturmanıza olanak sağlar. Bu konuda, işleçler öncelik sırasına göre listelenmiştir. Öncelik sırası, Aynı ifadede birden çok işleç göründüğünde PowerShell'in işleçleri değerlendirme sırasıdır.

İşleçler eşit önceliğe sahip olduğunda, PowerShell bunları ifade içinde göründükleri şekilde soldan sağa değerlendirir. Atama işleçleri, atama işleçleri ve sağdan sola doğru değerlendirilen olumsuzlama işleçleri (!, -not, -bnot) özel durumlardır.

Standart öncelik sırasını geçersiz kılmak ve PowerShell'i kapatılmamış bir bölümden önce ifadenin kapalı bölümünü değerlendirmeye zorlamak için parantez gibi kasalar kullanabilirsiniz.

Aşağıdaki listede, işleçler değerlendirildikleri sırayla listelenir. Aynı satırdaki veya aynı gruptaki işleçler eşit önceliğe sahiptir.

İşleç sütunu işleçleri listeler. Başvuru sütunu, işlecin açıklandığı PowerShell Yardım konusunu listeler. Konuyu görüntülemek için yazın get-help <topic-name>.

İŞLEÇ BAŞVURU
$() @() () @{} about_Operators
. ?. (üye erişimi) about_Operators
:: (statik) about_Operators
[0] ?[0] (dizin işleci) about_Operators
[int] (atama işleçleri) about_Operators
-split (birli) about_Split
-join (birli) about_Join
, (virgül işleci) about_Operators
++ -- about_Assignment_Operators
! -not about_Logical_Operators
.. (aralık işleci) about_Operators
-f (biçim işleci) about_Operators
- (birli/negatif) about_Arithmetic_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators

Aşağıdaki işleç grubu eşit önceliğe sahiptir. Büyük/küçük harfe duyarlı ve açıkça büyük/küçük harfe duyarlı olmayan değişkenleri aynı önceliğe sahiptir.

İŞLEÇ BAŞVURU
-split (ikili) about_Split
-join (ikili) 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

Liste burada öncelik sırasına göre aşağıdaki işleçlerle devam eder:

İŞLEÇ BAŞVURU
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor about_Logical_Operators

Aşağıdaki öğeler true işleçleri değildir. Bunlar, PowerShell'in komut söz diziminin bir parçasıdır, ifade söz diziminin değil. Atama her zaman gerçekleşen son eylemdir.

SÖZ DİZİMİ BAŞVURU
. (noktalı kaynak) about_Operators
& (arama) about_Operators
? <if-true> : <if-false> (Üçüncül işleç) about_Operators
?? (null-coalese işleci) about_Operators
| (işlem hattı işleci) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
&& || (işlem hattı zinciri işleçleri) about_Operators
= += -= *= /= %= ??= about_Assignment_Operators

Örnekler

Aşağıdaki iki komut, aritmetik işleçleri ve PowerShell'i ifadenin kapalı bölümünü değerlendirmeye zorlamak için parantez kullanmanın etkisini gösterir.

PS> 2 + 3 * 4
14

PS> (2 + 3) * 4
20

Aşağıdaki örnek, yerel dizinden salt okunur metin dosyalarını alır ve değişkene $read_only kaydeder.

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

Bu, aşağıdaki örne eşdeğerdir.

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

İşlem hattı işleci (), atama işlecinden (|= ) daha yüksek bir önceliğe sahip olduğundan, cmdlet'in aldığı dosyalar Get-ChildItem değişkene Where-Object atanmadan önce filtreleme için cmdlet'e $read_only gönderilir.

Aşağıdaki örnek, dizin işlecinin atama işlecinden öncelikli olduğunu gösterir.

Bu ifade üç dizeden oluşan bir dizi oluşturur. Ardından, dizideki ilk dize olan ilk nesneyi seçmek için 0 değerine sahip dizin işlecini kullanır. Son olarak, seçili nesneyi dize olarak atar. Bu durumda, atamanın hiçbir etkisi yoktur.

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

Bu ifade, dizin seçiminden önce atama işleminin gerçekleşmesini zorlamak için parantez kullanır. Sonuç olarak, dizinin tamamı bir (tek) dize olarak yayınlanır. Ardından, dizin işleci dize dizisindeki ilk öğeyi seçer ve bu da ilk karakterdir.

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

Aşağıdaki örnekte( büyüktür) işleci (mantıksal AND) işlecinden daha -and yüksek bir önceliğe sahip olduğundan -gt ifadenin sonucu YANLIŞ olur.

PS> 2 -gt 4 -and 1
False

Aşağıdaki ifadeye eşdeğerdir.

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

-ve işleci daha yüksek önceliğe sahipse yanıt DOĞRU olur.

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

Ancak bu örnek, işleç önceliğini yönetmeye yönelik önemli bir ilkeyi gösterir. Bir ifadenin yorumlanması zor olduğunda, varsayılan işleç önceliğini zorladığında bile değerlendirme sırasını zorlamak için parantez kullanın. Parantezler, betiklerinizi okuyan ve bakımını yapan kişilere niyetinizi açıkça gösterir.

Ayrıca bkz.