Temel Karşılaştırma Operatörleri
İnteger (Sayı) Karşılaştırma Operatörleri
[ ] Köşeli parantezi içerisinde kullanılan operatörler
-eq |
Eşittir |
-ne |
Eşit değil |
-lt |
'den küçük |
-le |
'den küçük veya eşit |
-gt |
'den büyük |
-ge |
'den büyük veya eşit |
(( )) Çift parantezi içerisinde kullanılan operatörler
< |
'den küçük |
<= |
'den küçük veya eşit |
> |
'den büyük |
>= |
'den büyük veya eşit |
-eq
Sayıların eşit olması koşulunda işlem yapılması için kullanılır.
Örnek:
if [ $ifade1 -eq $ifade2 ]; then pwd; fi
Yukarıdaki komut ifade1 ile ifade2'nin eşit olması durumunda dizin adresini gösterir.
#!/bin/sh
if [ 50 -eq 50 ]; then pwd; fi
/home/ceren/proje
* “-eq” parametresi yerine “ = ” veya “ == ” kullanılması da aynı işlevi görecektir.
-ne
Sayıların eşit olmaması koşulunda işlem yapılması için kullanılır.
Örnek:
if [ $ifade1 -ne $ifade2 ]; then pwd; fi
Yukarıdaki komut ifade1 ile ifade2'nin eşit olmaması durumunda dizin adresini gösterir.
#!/bin/sh
if [ 50 -ne 100 ]; then pwd; fi
/home/ceren/proje
* “-ne” parametresi yerine “ != ” kullanılması da aynı işlevi görecektir.
-lt
İlk sayının ikinci sayıdan daha küçük olması halinde işlem yapılması için kullanılır.
Örnek:
if [ 10 -lt 20 ]; then exit; fi
Yukarıdaki komut uygulandığında 10 20'den küçük olduğu için shell ekranından çıkacaktır.
if [ 20 -lt 10 ]; then exit; fi
Yukarıdaki komut uygulandığında 20 10'dan küçük olmadığı için herhangi bir işlem yapılmaz.
if [ 10 -lt 10 ]; then exit; fi
Yukarıdaki komut uygulandığında 10 10'dan küçük olmadığı için herhangi bir işlem yapılmaz.
-le
İlk sayının ikinci sayıdan daha küçük veya eşit olması halinde işlem yapılması için kullanılır.
Örnek:
if [ 10 -le 20 ]; then exit; fi # Shell'den çıkar.
if [ 20 -le 10 ]; then exit; fi # İşlem yapmaz
if [ 10 -le 10 ]; then exit; fi # Shell'den çıkar.
-gt
İlk sayının ikinci sayıdan daha büyük olması halinde işlem yapılması için kullanılır.
Örnek:
if [ 10 -gt 20 ]; then exit; fi # İşlem yapmaz.
if [ 20 -gt 10 ]; then exit; fi # Shell'den çıkar.
if [ 10 -gt 10 ]; then exit; fi # İşlem yapmaz.
-ge
İlk sayının ikinci sayıdan daha büyük veya eşit olması halinde işlem yapılması için kullanılır.
Örnek:
if [ 10 -ge 20 ]; then exit; fi # İşlem yapmaz.
if [ 20 -ge 10 ]; then exit; fi # Shell'den çıkar.
if [ 10 -ge 10 ]; then exit; fi # Shell'den çıkar.
<
İlk sayının ikinci sayıdan daha küçük olması halinde işlem yapılması için kullanılır.
Örnek:
if (( 10 < 20 )); then exit; fi
Yukarıdaki komut uygulandığında 10 20'den küçük olduğu için shell ekranından çıkacaktır.
if (( 20 < 10 )); then exit; fi
Yukarıdaki komut uygulandığında 20 10'dan küçük olmadığı için herhangi bir işlem yapılmaz.
if (( 10 < 10 )); then exit; fi
Yukarıdaki komut uygulandığında 10 10'dan küçük olmadığı için herhangi bir işlem yapılmaz.
<=
İlk sayının ikinci sayıdan daha küçük veya eşit olması halinde işlem yapılması için kullanılır.
Örnek:
if (( 10 <= 20 )); then exit; fi # Shell'den çıkar.
if (( 20 <= 10 )); then exit; fi # İşlem yapmaz
if (( 10 <= 10 )); then exit; fi # Shell'den çıkar.
>
İlk sayının ikinci sayıdan daha büyük olması halinde işlem yapılması için kullanılır.
Örnek:
if (( 10 > 20 )); then exit; fi # İşlem yapmaz
if (( 20 > 10 )); then exit; fi # Shell'den çıkar.
if (( 10 > 10 )); then exit; fi # İşlem yapmaz
>=
İlk sayının ikinci sayıdan daha büyük veya eşit olması halinde işlem yapılması için kullanılır.
Örnek:
if (( 10 >= 20 )); then exit; fi # İşlem yapmaz.
if (( 20 >= 10 )); then exit; fi # Shell'den çıkar.
if (( 10 >= 10 )); then exit; fi # Shell'den çıkar.
String (Metin) Karşılaştırma Operatörleri
String karşılaştırma operatörleri [ ] Köşeli parantez içerisinde kullanılır. Karakterlerin ascii koduna göre karşılaştırma yapar.
= veya == |
Eşit |
!= |
Eşit değil |
\> |
'den büyük |
\< |
'den küçük |
-z |
string değer içermiyor (null) |
-n |
string'in değeri var (null değil) |
= / ==
Ascii kodlarını karşılaştırarak iki string ifadenin birbirine eşit ise işlem yapar.
Örnek:
#!/bin/sh
if [ Ahmet = Ahmet ]; then echo "Bu 2 ifade birbirine esit"; fi
Bu 2 ifade birbirine esit
Örnek:
Aşağıdaki komut 2 ifade birbirine eşit olduğu için takvimi görüntüler.
#!/bin/sh
if [ Adana == Adana ]; then cal; fi
Temmuz 2011
Pz Sa Çr Pr Cu Ct Pa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
!=
Ascii kodlarını karşılaştırarak iki string ifade birbirine eşit değil ise işlem yapar.
Örnek:
#!/bin/sh
if [ Ahmet != Mehmet ]; then echo "Bu 2 ifade birbirine esit değil"; fi
Bu 2 ifade birbirine esit değil
\>
İlk ifade ascii kodları karşılaştırıldığında ikinci ifadeden büyük ise işlem yapılır.
Örnek:
#!/bin/sh
if [ izmit \> izmir ]; then ping -c 3 www.google.com; fi
PING www.google.com (74.125.39.105) 56(84) bytes of data.
64 bytes from www.l.google.com (74.125.39.105): icmp_seq=1 ttl=51 time=46.7 ms
64 bytes from www.l.google.com (74.125.39.105): icmp_seq=2 ttl=51 time=46.7 ms
64 bytes from www.l.google.com (74.125.39.105): icmp_seq=3 ttl=51 time=48.7 ms— www.google.com ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 46.737/47.416/48.737/0.950 ms
* Bu operatör [[ ]] çift köşeli parantez kullanıldığında ters slash'a "\" ihtiyaç duyulmaz.
Örnek:
#!/bin/sh
if [[ abc2 > abc1 ]]; then echo "Doğru"; fi
Doğru
\<
İlk ifade ascii kodları karşılaştırıldığında ikinci ifadeden küçük ise işlem yapılır.
Örnek:
#!/bin/sh
if [ ABC \< ABD ]; then date; fi
Prş Tem 14 14:14:21 EEST 2011
* Bu operatör [[ ]] çift köşeli parantez kullanıldığında ters slash'a "\" ihtiyaç duyulmaz.
Örnek:
Aşağıdaki örnekte karşılaştırma karakterlerin ascii kodları baz alınarak gerçekleştiği için 10 (1 ile başlıyor) 5'ten küçük gözükür.
#!/bin/sh
if [[ 10 < 5 ]]; then echo "Sayı karşılaştırmak önerilmez"; fi
"Sayı karşılaştırmak önerilmez"
-z
Kontrol edilen değişken bir değer içermediğinde işlem yapılmasını sağlar.
Örnek:
#!/bin/sh
if [ -z “$String” ]; then echo "\$String bir değer içermiyor"; fi;
$String bir değer içermiyor.
-n
Kontrol edilen değişken bir değer içeriyorsa işlem yapılmasını sağlar.
Örnek:
#!/bin/sh
String=Manisa
if [ -n “$String” ]; then echo "\$String degiskeninin degeri $String."; fi;
$String degiskeninin degeri Manisa.
Koşulu tersine çevirmek
Belirtilen koşulu tersine çevirmek için koşuldan önce ünlem “ ! ” işareti kullanılması gerekir.
Örnek:
Aşağıdaki komut sadece ifadelerin eşit olmaması durumunda ekrana “Eşit değil” yazar.
#!/bin/sh
if [ ! “Ankara” = “Van” ]; then echo “Eşit değil”; fi
“Eşit değil”
* ! işaretini koşul parantezinden önce de kullanabiliriz.
Örnek
Yukarıdaki komut sadece ilk ifadenin ikinci ifadeden büyük olmaması durumunda ekrana “Küçük veya eşit” yazar.
#!/bin/sh
if ! [ 5 -gt 25 ]; then echo “Küçük veya eşit”; fi
“Küçük veya eşit”