'and' ve 'or'

'if Statements' isimli blogda iki adet sembolden bahsettik. Bunlar; '||' ve '&&' idi. Bu blogda bu iki sembol ile ilgili biraz pratik yapmamız gerektiğini düşünüyorum.

Sembollerin ne olduğunu basitçe açıklamıştık. Hatırlatıcı görsel:

'&&' veya 'and'

Öncelikle '&&' yani 'and' operatörü ile başlayalım ve kırmızı yazıya dikkat edelim; "...iki koşulun da gerçekleşmiş olması zorunludur." Demek ki bir koşul yerine iki koşulumuz olmalı ve bu iki koşulun bağlantısını bu sembol sağlamalıdır.

Programlama dünyasında bir adet 'true' ve bir adet 'false' mevcuttur. 'true', koşulun veya durumun doğru olduğunu gösterir. 'false' ise koşulun veya durumun yanlış olduğunu gösterir. Bu noktada eğer 'and' operatörünü kullanıyor ve koşulunuzun arkasındaki komutların çalışmasını istiyorsanız iki koşulun da ya 'true' olması gerekir. Ne demek istiyorum?

Biraz komplike olacak ancak bir şirkette İK olarak çalıştığınızı ve insanları işe almakla görevli olduğunuzu varsayalım. Patronunuz size, işe alacağınız insanların 22 yaşından büyük ve 35 yaşından küçük olması gerektiğini söylemiştir. Bu durumda siz, bir Bash Script yazmalı ve kontrollerinizi sağlamalısınız. Bunu nasıl yazarsınız?

İlk önce kullanıcıdan yaşını girmesini istedik. Daha sonra eğer yaş, "22'den büyük veya ona eşitse ve 35'ten küçükse veya ona eşitse", 'aday, iş için uygun' mesajını verdik. Öyle değilse de 'aday iş için uygun değil' mesajını verdik. Bu noktada aslında daha sade bir anlatımla şunu söyledik: "Eğer yaş, 22 ile 35 arasındaysa uygun, değilse de uygun değil".

Kodu deneyelim.

Çıktılara dikkat ettiğiniz zaman girdiğimiz yaş bilgileri eğer 22 ile 35 arasındaysa 'uygun', değilse 'uygun değil' dedik. Peki, burada aslında neler oluyor?

İlk koşulumuza bakalım.

Biz, bir yaş girdiğimizde Bash, ilk önce ilk koşula bakıyor. Biz, 'eğer age, 22'den büyük veya ona eşitse' demişiz. Bu durumda girdiğimiz yaş eğer 22'den küçükse yani ne ona eşit ne de ondan büyükse bu koşul direkt olarak 'false' konumuna düşüyor. Eğer ilk koşul 'false' ise Bash, bunu çalıştırmayacaktır. Ancak girdiğimiz yaş eğer orada yazdığımız gibi 22'ye eşit veya ona eşitse koşul 'true' oluyor. İlk koşul için koşulun 'true' olduğunu yani 22'den büyük bir sayı girdiğimizi düşünelim. Buraya kadar tamamız.

Bir yaş girdiğimizde Bash, birinci durumu kontrol etti. Daha sonra aradaki operatöre baktı ve onun 'and' olduğunu gördü. Son olarak Bash kendine şunu dedi: "Eğer birinci koşul true ise ikinci koşul da true olmak zorunda yoksa bunu çalıştırmam." Buna göre aşağıdaki denklemleri verebiliriz:

  • false + true = false (çalışmaz)
  • true + true = true (çalışır)

Şimdi, ikinci koşula bakalım.

Aynı mantıkta düşünebiliriz. Bash, ilk koşulun 'true' olduğunu ve aradaki operatörün 'and' olduğunu gördü. İkinci koşulu da kontrol ettikten sonra eğer 'true' olduğunu görürse işlemlerini sağlayacaktır ama 'false' ise çalıştırmayacaktır. Biz yine bunun 'true' olduğunu düşünelim:

Şimdi, kodumuza geri dönelim ve ne olduğunu anlayalım.

Kutu uyumuna dikkat edelim. Kırmızı kutulara dikkat ettiğimizde bunun bir 'koşul sağlanırsa uygula' komutu olduğunu görüyoruz. Yani 'if (( $age >= 22 && $age >= 35 ))' komutu sağlanırsa, aday uygundur. Çıktı kısmına baktığımızda da '25' yazdığımızı ve bu sayı 22 ile 35 arasında olma koşulunu sağladığı için 'Aday iş için uygun' yanıtını aldık.

Aksi durum için yeşil kutulara bakalım. 'else' komutu, 'if koşulu sağlanmadıysa' anlamını taşıyordu. Bu yüzden biz, '19' sayısını verdiğimiz için yani verdiğimiz sayı 22 ile 35 arasında olmadığı için 'Aday iş için uygun değil' yazısıyla karşılaştık. İşte, 'and' veya '&&' operatörü bunları yapmamıza olanak tanıyor.

'||' veya 'or'

Hatırlatıcı görselimizi tekrar koyalım.

Bunun için aşağıdaki gibi bir kod hazırladım. Ama önce, yukarıdaki hatırlatıcıdan kırmızı yazıya bakalım; "... iki koşuldan birinin gerçekleşmesi yeterlidir."

Kullanıcıdan bir sayı girmesini istedik. Daha sonra bu sayıyı 'eğer 24'ten küçükse ya da 100'den büyükse' şeklinde koşullandırdık. Yani kullanıcı 24'ten küçük bir sayı girerse koşul çalışacak çünkü '$number > 100' koşulu 'false' bile olsa '$number < 24' koşulu 'true' olacaktır ve 'or' operatörü için tek bir koşulun 'true' olması yeterlidir.

Programı çalıştırıp bakalım.

Girdiğimiz sayı '50' oldu. Bu, hem ilk koşulun (24'ten küçük olmalı) hem de ikinci koşulun (100'den büyük olmalı) sağlanmadığı yani 'false' olduğu anlamına gelir. Dolayısıyla 'if' bloğu değil 'else' bloğu çalışmış oldu.

Burada da ilk önce '20', daha sonra '220' sayılarını verdim. Gördüğünüz gibi iki sayı için de 'if' bloğu çalıştı. Örneğin '20' sayısı 100'den büyük değil (false) ama 24'ten küçük bir sayıdır (true). Tek bir 'true' olması yeterlidir. Bu tarz bir koşulun çalışmaması için iki koşulun da 'false' olması gereklidir.

Eğer bu iki sembolü benim gibi birbirine karıştırıyorsanız Bash bir kolaylık daha sağlıyor. '&&' yani 'and' için '-a'; '||' yani 'or' için ise '-o' ifadesini kullanabilirsiniz. ANCAK eğer bu ifadeleri kullanacaksanız eşitlik durumlarını da harflerle yazmanız gerekir.

'if Statements' blogunda bunları vermiştim. Eğer '-a' veya '-o' kullanacaksanız bunları, arkadaşlarıyla beraber kullanmak zorundasınızdır.


Yayınlanma Tarihi: 2022-09-13 15:09:14

Son Düzenleme Tarihi: 2022-09-15 14:12:49