intranet-karsilastirma-operatorleri

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”