24
Konuya ait anahtar kelimeler : Case, read-echo kullanımı Case : Türkçe "Durum, hal" anlamında kullanılabilmektedir. "IF" koşullu ifadesine benzemektedir. Birçok "if-elif-else" komutlarının yaptığı işlemi çok kısa bir kullanım ile yapmamızı sağlamaktadır. Siz nerede "IF" nerede "Case" kullanacağınıza kendiniz karar vermelisiniz. "Case" mantığını elde edilen bir ifade yada duruma göre birden çok seçenek arasından hangisine uyuyorsa o seçenekte verilen komutları uygula olarak yorumlayabiliriz. Kullanımı: case $degisken in durum1) Komutlar.... ;; durum2) Komutlar.... ;; durum3) Komutlar.... ;; *) Komutlar... ;; esac şeklinde olmaktadır. Şimdi "case_örnek.sh" adında bir script dosyası oluşturalım ve içeriğini aşağıdaki gibi düzenleyerek kaydedelim.
[alax@alax script]$ cat case_örnek.sh #!/bin/bash # case_örnek.sh case $1 in "elma") echo "Elmayı çok severim..." ;; "portakal") echo "Portakalı çok severim..." ;; "kivi") echo "Kiviyi çok severim..." ;; *) echo "$1 de sevdiğim bir meyvedir." ;; esac
Şimdi scriptimizi çalıştıralım ve bazı meyve isimlerini birinci pozisyonda scripte sunalım.
[alax@alax script]$ chmod u+x case_örnek.sh [alax@alax script]$ ./case_örnek.sh elma Elmayı çok severim... [alax@alax script]$ ./case_örnek.sh portakal Portakalı çok severim... [alax@alax script]$ ./case_örnek.sh kivi Kiviyi çok severim... [alax@alax script]$ ./case_örnek.sh çilek çilek de sevdiğim bir meyvedir. [alax@alax script]$
Şimdi başka bir örnek yapalım, bu örneğimizde "case_sayı.sh" adında bir script dosyası oluşturalım ve bu scriptin işi şu olsun: Verilen sayının 3 ile modunu alsın ve çıkan değeri "case" seçeneklerine göre değerlendirerek bizlere bir mesaj versin. Script dosyası aşağıdaki gibi olacaktır.
[alax@alax script]$ cat case_sayı.sh #!/bin/bash # case_sayı.sh degisken=$(($1 % 3)) case $degisken in $((5*5-25)) ) echo "$1 sayısının 3 ile bölümünden kalan 0 dır." ;; $[ 5*5-24 ] ) echo "$1 sayısının 3 ile bölümünden kalan 1 dir." ;; *) echo "$1 sayısının 3 ile bölümünden kalan 2 dir." ;; esac
Şimdi scriptimizi çalıştıralım.
[alax@alax script]$ chmod u+x case_sayı.sh [alax@alax script]$ ./case_sayı.sh 25 25 sayısının 3 ile bölümünden kalan 1 dir. [alax@alax script]$ ./case_sayı.sh 26 26 sayısının 3 ile bölümünden kalan 2 dir. [alax@alax script]$ ./case_sayı.sh 27 27 sayısının 3 ile bölümünden kalan 0 dır. [alax@alax script]$
"Case" kullanımı grdüğünüz üzere çok kolaydır. Lütfen pratik yapmayı unutmayınız. read-echo : "echo" komutunu şimdiye kadar sıkça kullandık, fakat "echo" komutu da belirli parametreler alabilmektedir. read : Türkçe "okumak" anlamına gelmektedir. Bir nevi "echo" komutu işlevinin zıttını yapmaktadır. "echo" komutuna ait iki adet opsiyon bulunmaktadır.
-e Backslash-escape(ters eğik çizgi ile kullanılan) özel karakterlerin yorumlanmasını sağlamaktadır.
-n Yazma işinden sonra komut yazımını aynı satırda tut, satır atlatmama anlamlarına gelmektedir.
Örnek :
[alax@alax script]$ echo "Burası ilk satır \nBurası ikinci satır" Burası ilk satır \nBurası ikinci satır [alax@alax script]$ echo -e "Burası ilk satır \nBurası ikinci satır" Burası ilk satır Burası ikinci satır [alax@alax script]$
Şimdi "echo_read.sh" adında bir script dosyası oluşturalım, içeriği aşağıda verilmiştir.
[alax@alax script]$ cat echo_read.sh #!/bin/bash # echo_read.sh echo "Lütfen adınızı yazınız: " read isim echo echo "Merhaba $isim" sleep 1 echo echo -n "Lütfen adınızı tekrar yazınız: " read ad echo echo "Tekrar Merhaba $ad"
Lütfen script dosyasını çalıştırınız ve isminizi yazarak değişiklikleri gözlemleyiniz. Bu şekilde kullanıcıdan, script çalışırken veri girişi isteyebilirsiniz. Her zaman pozisyonlardan değer okumak zorunda değilsiniz. Şimdi son olarak "read" komutu ile "echo" komutuna gerek kalmadan kullanıcıdan veri isteme komutunu yazalım. Read ile kullanıcıdan veriyi alarak onu bir değişkene atama işi: read -p "Kullanıcıya sunulan mesaj: " degisken şeklinde olmaktadır. Şimdi "echo_read.sh" dosyasını aşağıdaki şekilde düzenleyerek bu örneğimizi de gerçekleştirelim.
[alax@alax script]$ cat echo_read.sh #!/bin/bash # echo_read.sh echo "Lütfen adınızı yazınız: " read isim echo echo "Merhaba $isim" sleep 3 echo echo -n "Lütfen adınızı tekrar yazınız: " read ad echo echo "Tekrar Merhaba $ad" sleep 1 echo read -p "Adınızı son olarak giriniz: " degisken echo "Güle güle $degisken"
Unix/Linux sistemlerde her zaman bir yolun başka bir alternatifi bulunmaktadır. Hangi yoldan gideceğiniz size kalmış.