intranet-coklu-kosullar

Çoklu Koşullar

 

Bir if yapısı içerisinde birden fazla koşul kullanabiliriz, ve bu koşulların en az 1 tanesinin veya hepsinin geçerli olması halinde işlem yapılmasını sağlayabiliriz.

 

-a

&&

“ve” anlamına gelir. Her 2 tarafındaki koşulun da doğru olması istendiğinde kullanılır.

-a ile && operatörlerinin kullanımı birbirinden farklıdır.

-o

||

“veya” anlamına gelir. Koşullardan herhangi birinin doğru olması istendiğinde kullanılır.

-o ile || operatörlerinin kullanımı birbirinden farklıdır.

 

* Örnek kullanımlar aşağıdaki gibidir;

if [ kosul-1 -a kosul-2 ]; then

   kosul-1 ve kosul-2 geçerli ise uygulanacak komutlar.

else

   kosul-1 veya kosul-2'den en az biri geçerli değil ise uygulanacak komutlar.

fi

if [ kosul-1 ] && [ kosul-2 ]; then

   kosul-1 ve kosul-2 geçerli ise uygulanacak komutlar.

else

   kosul-1 veya kosul-2'den en az biri geçerli değil ise uygulanacak komutlar.

fi

if [ kosul-1 -o kosul-2 ]; then

   kosul-1 veya kosul-2'den en az biri geçerli ise uygulanacak komutlar.

else

   kosul-1 ve kosul-2 geçerli değil ise uygulanacak komutlar.

fi

if [ kosul-1 ] || [ kosul-2 ]; then

   kosul-1 veya kosul-2'den en az biri geçerli ise uygulanacak komutlar.

else

   kosul-1 ve kosul-2 geçerli değil ise uygulanacak komutlar.

fi

 

Örnek:

#!/bin/sh
if [ 10 = 20 ] || [ 30 = 30 ]; then
lp rapor.txt
else
echo "Eşleşme başarısız"
fi

request id is Ceren-Phaser-3140-and-3155-8 (1 file(s))

Yukarıdaki komutta ilk koşul başarısız olmasına rağmen ikinci koşul "doğru" değeri döndürdüğü için rapor.txt dosyasının yazıcı çıktısı alınır. Aynı komutu aşağıdaki gibi de yazabiliriz;

#!/bin/sh
if [ 10 = 20 -o 30 = 30 ]; then
lp rapor.txt
else
echo "Eşleşme başarısız"
fi

request id is Ceren-Phaser-3140-and-3155-8 (1 file(s))

 

Örnek:

#!/bin/sh
if [ -e “/home/ceren/dosya1.txt” ] && [ -e “/home/ceren/dosya2.txt” ]; then
rm -f /home/ceren/dosya2.txt; echo "dosya2.txt silindi."; fi

dosya2.txt silindi.

Yukarıdaki komut /home/ceren/ içerisinde hem dosya1.txt hem de dosya2.txt var ise dosya2.txt'yi silecektir. Aynı komutu aşağıdaki gibi de yazabiliriz;

#!/bin/sh
if [ -e “/home/ceren/dosya1.txt” -a -e “/home/ceren/dosya2.txt” ]; then
rm -f /home/ceren/dosya2.txt; echo "dosya2.txt silindi."; fi

dosya2.txt silindi.

 

Örnek:

#!/bin/sh
if [ ali = ali ] &&  [ berna = hande ] || [ mehmet = mehmet ] ; then echo "Doğru"; else echo "Yanlış"; fi

Doğru

Yukarıdaki komutta && operatöründen "yanlış" yani "0" değeri döner. Fakat son koşul doğru olduğu için || operatöründen "1" değeri döner ve shell ekranına "Doğru" yazılır. Aynı komutu aşağıdaki gibi de yazabiliriz;

#!/bin/sh
if
[ ali = ali -a berna = hande -o mehmet = mehmet ] ; then echo "Doğru"; else echo "Yanlış"; fi

Doğru

 

* Çoklu koşulları [ ] dışarısında { } parantezleri ile [ ] içerisinde ise \(  \) parantezleri ile gruplandırabiliriz.

 

Örnek:

#!/bin/sh
if
[ 10 = 20 ] && { [ 20 = 20 ] || [ 30 = 30 ] ;}; then echo "Doğru"; else echo "Yanlış"; fi

Yanlış

Yukarıdaki komutta ilk önce  { } içerisindeki || operatörü, daha sonra && operatörü işlem görecektir. Aynı komutu aşağıdaki gibi de yazabiliriz;

#!/bin/sh
if
[ 10 = 20  -a \( 20 = 20 -o 30 = 30 \) ] ; then echo "Doğru"; else echo "Yanlış"; fi

Yanlış