Hurriyet

20 Kasım 2013 Çarşamba

Linux / Unix: Shell Scripting If/Else Conditions - If/Else Koşulları

Scriptlerimizin daha interactive yani etkileşimli olması için bazı soruların sorulması ve bunlara göre işlemlerinin değiştirilmesi gerekir. Verdiğimiz cevaplara veya değişkenlere göre farklı şartların devreye girmesi gerekir. Bu etkileşimli yapının devreye sokulmasında koşullu ifadeler çok önemli bir yer tutar. Bu koşullu ifadelere örnek verirsek if/else, while, do while ifadeleri kullanılabilinir.

Bu ifadelerden ilk if/else'i inceleyeceğiz. If/else'i bir örnek üzerinden inceleyelim.

 #!/bin/bash  
   
   
 echo "Yapmak istediginiz islem icin lutfen numara giriniz.\n"  
   
 read var1  
 echo "var1=$var1"  
 if [ "$var1" == "1" ];  
   then  
    ls;  
   else  
    echo "Yanlis";  
 fi

Yukarıdaki örneğimizde kullanıcıdan bir numara girmesini istiyoruz. Bu numaraya göre de işlem yaptırıyoruz. Buradaki syntax'ımıza göre önce if ile başlayıp sonra karşılaştırmamızı yaptırıyoruz. Ertesinde then diyip koşulumuzun doğru olması durumunda bulunduğumuz klasör de ls çekip içeriklere bakarken, 1 dışında herhangi bir numara girince "yanlış" şeklinde bir uyarı çıkarmaktadır. En sonunda "fi" denerek işlem bitirilir.

Burada syntax ve boşluklar çok önemlidir. if'ten sonra bir boşluk sonra köşeli parantezlerden sonrada birer boşluk bırakılması önemlidir.

Buradaki örnekte ise yas aralıkları kontrol edilmektedir. Kullanıcının girdiği yaşa göre bir sonuç döndürmektedir. Burada farklı olan "else" yerine "elif" örneği verilmiştir.

 #!/bin/sh  
   
   
 echo "Yaş giriniz.:"  
 read yas  
   
 if [ "$yas" -lt 20 ] || [ "$yas" -ge 50 ]; then  
      echo "yas aralıgının dısında ."  
 elif [ "$yas" -ge 20 ] && [ "$yas" -lt 30 ]; then  
      echo "20'den büyük 30'tan küçük"  
 elif [ "$yas" -ge 30 ] && [ "$yas" -lt 40 ]; then  
      echo "30'dan büyük 40'tan küçük"  
 elif [ "$yas" -ge 40 ] && [ "$yas" -lt 50 ]; then  
      echo "40'tan büyük 50'den küçük"  
 fi  


Shell Scripting'deki Karşılaştırma Operatörleri:


 -eq     eşittir  
 -ne     eşit değildir  
 -lt     küçüktür  
 -le     küçük eşittir  
 -gt     büyüktür  
 -ge     büyük eşittir  
 ==      eşittir  
 !=      eşit değildir  


İf/Else Örneği:


Örneğimizin amacı  `pwd` ile "$PWD" komutlarının sonucu aynıdır. Bu yüzden kullanıcıların kafaları karışabilinir. " ` " işareti " ' " bu işaretle karıştırılmamalıdır.

 LOG_DIR=/home/users/oracle 
if [ `pwd` != "$LOG_DIR" ] #veya: if [ "$PWD" != "$LOG_DIR" ]  
 then  
  echo "Oracle Home'unda değilsiniz."  
  exit;
 fi   



Hiç yorum yok:

Yorum Gönder