PowerShell'de if İfadesinde Birden Çok Koşulu Birleştirme
PowerShell'de birden çok koşulu birleştirmek için mantıksal işleçler ve karşılaştırma işleçleriyle birlikte bir
ififadesi kullanırız. Koşulları gruplandırmak ve değerlendirme sırasını kontrol etmek için (()) ile temsil edilen parantezleri de kullanırız. Bu nedenle elimizde hangi mantıksal, aritmetik ve karşılaştırma operatörlerinin bulunduğunu, bunların ne anlama geldiğini ve neler yapabileceğini bilmek önemlidir. Hızlı anlaşılması için aşağıdaki tablolara bakın.
Tüm karşılaştırma, mantıksal ve aritmetik operatörler ve bunların öncelikleri, kod örneklerinden sonra tablo halinde açıklanmaktadır.
Mantıksal ve Karşılaştırma Operatörleriyle if Kullanımı
if ifadesini bir mantıksal işleçle (-and) ve iki karşılaştırma işleciyle (-gt ve -lt ) kullanın ) PowerShell'de birden çok koşulu birleştirmek için.
-and, -gt, & -lt ile if kullanın:
$number1 = 3
$number2 = 11
if ($number1 -lt 4 -and $number2 -gt 10){
echo "'$number1' is less than '4' while '$number2' is greater than '10'"
}ÇIKTI:
'3' is less than '4' while '11' is greater than '10'
Yukarıdaki if ifadesi yalnızca her iki koşulun da True olması durumunda yürütülecektir; Her iki koşulun da karşılanmadığı başka bir örneği ele alalım.
-and, -gt, & -lt ile if kullanın:
$number1 = 4
$number2 = 11
if ($number1 -lt 4 -and $number2 -gt 10){
echo "'$number1' is less than '4' while '$number2' is greater than '10'"
}Bu sefer herhangi bir çıktı alamayacağız çünkü her iki koşulun da hala yerine getirilmesi gerekiyor.
PowerShell'de birden çok koşulu birleştirmek için if ifadesini bir mantıksal işleçle (-or) ve bir karşılaştırma işleciyle (-eq) kullanın .
-or ve -eq ile if kullanın:
$firstname = "John"
$lastname = "Williamson"
if ($firstname -eq "John" -or $lastname -eq "Williamson") {
echo "Condition satisfied."
}
else{
echo "Condition not satisfied."
}ÇIKTI:
Condition satisfied.Burada if bloğu yalnızca belirtilen koşullardan en az birinin veya tamamının True olması durumunda yürütülecektir; aksi halde else bloğu yürütülür. Hiçbir koşulun Doğru olmadığı örneği değiştirelim.
-or ve -eq ile if kullanın:
$firstname = "Martin"
$lastname = "Guptill"
if ($firstname -eq "John" -or $lastname -eq "Williamson") {
echo "At least one or all conditions are satisfied."
}
else{
echo "No condition is satisfied."
}ÇIKTI:
No condition is satisfied.if ifadesini iki mantıksal işleçle (-not ve -or) ve bir karşılaştırma işleciyle (-lt ) kullanın ) PowerShell'de birden çok koşulu birleştirmek için.
-not, -or, & -eq ile if kullanın:
if (-not 4 -le 2 -or 4 -lt 2) {
echo "Do something."
}ÇIKTI:
Do something.Odak! bu örneğin anlaşılması için dikkat edilmesi gerekiyor. Öncelikle yukarıdaki kod parçacığında kullanılan her operatörün önceliğini bilmek önemlidir. Bu nedenle, -not en yüksek önceliğe sahiptir ve ilk olarak değerlendirilecektir; -or ise en düşük önceliğe sahiptir ve son olarak değerlendirilecektir. Şimdi, aynı önceliğe sahip iki -lt operatörümüz var, ancak -not operatöründen hemen sonra gelen -lt operatörü değerlendirilecek Birinci.
İşte yürütme akışı:
4 -lt 2=Yanlış-not 4 -lt 2=Doğru- Başka bir
4 -lt 2=False - 2. adımın sonucu
-or3. adım=Doğru -veya Yanlış=Doğru
Değerlendirme sırasını kontrol eden ve kodun okunabilirliğini artıran parantezleri tanıtmanın en iyi zamanıdır. Önce () içindeki ifadeler değerlendirilecektir. İç içe parantezlerimiz varsa ilk önce içtekiler dikkate alınacaktır. Aşağıdaki örneğe bakın.
-not, -or & -eq ile if kullanın:
if ((-not (4 -le 2)) -or (4 -lt 2)) {
echo "Do something."
}ÇIKTI:
Do something.Benzer şekilde aşağıdaki tablolarda verilen diğer operatörleri de kullanabiliriz.
Karşılaştırma Operatörleri ve Öncelikleri
Tüm karşılaştırma operatörleri bir Boolean değeri (Doğru/Yanlış), eğer koşul yerine getirilirse True döndürür; aksi halde Yanlış. Önemli olan, aynı anda birden fazla operatörümüz varsa ilk önce hangi operatörün değerlendirileceğidir. Bu durumda aşağıda en yüksekten en düşüğe doğru öncelik sırasına göre değerlendirilecektir.
-eq -ne -gt -ge -lt -le-like -notlike-match -notmatch-in -notIn-contains -notcontainsYukarıdaki karşılaştırma operatörleri grubu aynı önceliğe sahiptir. Büyük/küçük harfe duyarlı (c önekiyle eklenmiştir, örneğin -cmatch) ve açıkça büyük/küçük harfe duyarlı değildir (i önekiyle eklenmiştir, örneğin ). -imatch) değişkenleri de eşit (aynı) önceliğe sahiptir. Verilen ifadede görüldüğü gibi en yüksek önceliğe (önceliğe) sahip olan operatör ilk olarak değerlendirilecek, aynı önceliğe sahip olan operatörler ise soldan sağa doğru değerlendirilecektir.
Yukarıdaki tabloda sunulan örneklerde, dizileri oluşturmak için
@()ile temsil edilen dizi operatörü kullanıldı.
Mantıksal ve Aritmetik Operatörler ve Öncelikleri
Tüm mantıksal işleçler, belirtilen koşul karşılanırsa True şeklinde bir Boolean değeri döndürür; aksi halde Yanlış. Öte yandan, aritmetik operatörler (bitsel operatörler), operatöre dayalı olarak sayısal bir değer döndürür. Bu operatörlerin ayrıca aşağıda en yüksekten en düşüğe doğru öncelikleri vardır.
-band -bnot -bor -bxor-and -or -xorYukarıdaki operatör grubu eşit önceliğe sahiptir. Bu nedenle öncelikli olarak en yüksek önceliğe sahip operatörler değerlendirilecektir. Bunun aksine, aynı önceliğe sahip operatörler, verilen ifadede göründükleri şekilde soldan sağa doğru değerlendirilecektir.
-nottüm karşılaştırma, aritmetik ve mantıksal operatörlerde en yüksek önceliğe sahiptir. Karşılaştırma operatörlerinin en yüksek önceliğe sahip olmaları nedeniyle aritmetik ve mantıksal operatörlerden daha önce değerlendirileceğini de unutmamak gerekir. Ayrıca parantezleri kullanarak değerlendirme sırasını da kontrol edebilirsiniz.
Operatörün önceliğini buradan kontrol edebilirsiniz.
Bu tamamen PowerShell'de if ifadesinde birden fazla koşulun nasıl birleştirileceği ile ilgilidir.
