Ç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ış