Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

BMS-301 Kabuk Programlama Güz 2015 (5. Sunu) (Yrd. Doç. Dr. Deniz Dal)

Benzer bir sunumlar


... konulu sunumlar: "BMS-301 Kabuk Programlama Güz 2015 (5. Sunu) (Yrd. Doç. Dr. Deniz Dal)"— Sunum transkripti:

1 BMS-301 Kabuk Programlama Güz 2015 (5. Sunu) (Yrd. Doç. Dr. Deniz Dal)

2 Kabuk Programlama Bundan önceki derslerimizde öğrendiğimiz linux/kabuk komutlarını bir dosya içerisinde alt alta yazarak (gerektiğinde onları diğer programlama yapıları ile birleştirerek) onların ard arda çalışmasını sağlayabiliriz. Bu sayede komutların girdi ve çıktıları birbirleriyle ilişkilendirilerek belirli işlevler gerçekleştirilebilir. Bu yapı ile oluşturulan ve hazırlanan komut dizisi kabuk programı (shell script) olarak adlandırılır. Bilgisayar programlamayı öğrenirken kullandığımız ve artık geleneksel hale gelen ekrana Merhaba Dünya çıktısı veren bir programın kabuk için nasıl yazılacağı ve çalıştırılacağı sonraki slaytlarda adım adım anlatılmıştır.

3 Merhaba Dünya Bir komut penceresi editörü (nano veya vim) veya bir grafik editör (gedit) kullanarak ev dizininizde Merhaba.sh adlı bir dosya oluşturunuz, içerisine aşağıdaki 2 komutu yazınız ve kaydederek çıkınız. (Dosyanıza.sh uzantısını vererek onun bir kabuk programı olduğunu daha sonra kolayca anlayabilirsiniz.) #!/bin/bash #İlk Kabuk Programım echo "Merhaba Dünya"; Daha sonra konsol penceresini açınız ve dosyanıza chmod u+x komutuyla çalıştırma izni veriniz. ddal@pardus2011 scripts $ chmod u+x Merhaba.sh

4 Hatırlatma ddal@pardus2011 scripts $ gedit Merhaba.sh ddal@pardus2011 scripts $ gedit Merhaba.sh & Komut penceresinde çalıştırdığınız bir komutun arka planda çalışmaya devam etmesini ve komut penceresinin kontrolünü size devretmesini isterseniz enter tuşundan önce & karakterini tuşlamalısınız. (run the command in the background)

5 Merhaba Dünya Bu adımlardan sonra kabuk programınızı (kabuğunuzun bulunduğu mevcut dizin üzerinden) aşağıdaki şekilde çalıştırabilirsiniz. ddal@pardus2011 scripts $./Merhaba.sh Merhaba Dünya Yazdığınız kabuk programına çalıştırma hakkı vermeden de bash komutuyla çalıştırabilirsiniz. ddal@pardus2011 scripts $ bash Merhaba.sh Merhaba Dünya

6 Hatırlatma Bir kabuk programı illa da kaydedildiği dizin (klasör) üzerinden çalıştırılmak zorunda değildir. Bir önceki slayttaki kabuk programı aşağıdaki gibi de çalıştırılabilir. ddal@pardus2011 /$ /home/ddal/scripts/Merhaba.sh Merhaba Dünya ddal@pardus2011 ~$./scripts/Merhaba.sh Merhaba Dünya

7 Kabuk programlarının ilk satırındaki: #!/bin/bash ifadesi programın çalışacağı kabuğu belirtir. (Örneğin bu durumda bash kabuğu) Eğer belirtilmezse program üzerinde bulunulan kabuk tarafından çalıştırılır. Kabuk programının yazılım farklarından kaynaklanan hatalarla karşılaşmaması için programın çalıştırılacağı kabuk programı yukarıdaki gibi dosyanın ilk satırında belirtilmelidir. Program dosyanızın ilk satırı (#!) dışındaki herhangi bir yerde # işaretinden sonra kullanılan ifadeler açıklama satırı olarak kabul edilirler ve kabuk programı tarafından yorumlanmazlar.

8 Değişkenler Değişkenler (variables) bir programın çalışması boyunca gerekli olan verileri saklayan ve gerektiğinde bunları değiştirmeye imkan sağlayan programlama yapılarıdır. Değişkenler programda kullanılan bir sayı değerini (tam veya ondalıklı sayı) ya da bir karakter dizisini (string) saklamak amacıyla kullanılabilirler. Değişkenler Linux kabuklarında = (atama operatörü) ile tanımlanırlar. Değişkenler tanımlanırken = ile ifadeler arasında boşluk bulunmamasına dikkat edilmelidir. Ayrıca değişken tanımlanırken değişken adının önünde herhangi bir sembol bulunmamalıdır, fakat program içerisinde kullanılırken değişken isimlerinin önüne $ sembolü getirilmelidir.

9 Değişkenler ddal@pardus2011 scripts $ kullaniciYasi=33 ddal@pardus2011 scripts $ kullaniciAdi="Deniz DAL" ddal@pardus2011 scripts $ kullaniciEmaili="ddal@atauni.edu.tr" ddal@pardus2011 scripts $ echo $kullaniciYasi 33 ddal@pardus2011 scripts $ echo $kullaniciAdi Deniz DAL ddal@pardus2011 scripts $ echo $kullaniciEmaili ddal@atauni.edu.tr Yukarıda kullaniciYasi, kullaniciAdi ve kullaniciEmaili isimlerinde üç adet değişken tanımlanmıştır ve daha sonra bu değişkenlerin değerleri echo komutuyla ekrana yazdırılmıştır.

10 Kabuk Programlarına Klavyeden Veri Girişi ve read Komutu Değişkenlere programın çalışması sırasında dışarıdan değer atanabilir ve bu işlem read komutu ile gerçekleştirilir. Aşağıdaki kabuk programını bir metin editöründe yazarak ve dosya adı olarak DegerOku.sh kullanarak kaydediniz. (echo komutuna –n seçeneği verilerek tırnak işareti içerisindeki bilgi ekrana yazdırıldıktan sonra imlecin bir alt satıra gitmesi engellenir.) #!/bin/bash echo –n "Kullanıcı Adınızı Giriniz: "; read kullaniciAdi; echo "Girdiğiniz Kullanıcı Adı: $kullaniciAdi";

11 Kabuk Programlarına Klavyeden Veri Girişi ve read Komutu Daha sonra yazdığınız DegerOku.sh adlı programınızı konsol üzerinde aşağıdaki gibi çalıştırınız. ddal@pardus2011 scripts $ chmod u+x DegerOku.sh ddal@pardus2011 scripts $./DegerOku.sh Kullanıcı Adınızı Giriniz: ddal Girdiğiniz Kullanıcı Adı: ddal

12 echo Komutu ve –e Seçeneği echo komutunun –e (escape) seçeneğinin ne işe yaradığını araştırınız.

13 printf printf "Surname: %s\nName: %s\n" "$SURNAME" "$FIRSTNAME"; printf "%d\n" 5; printf "%f\n" 5; printf "There are %d customers with purchases over %d.\n" 50 20000; printf "%10d\n" 11; printf "%-10d %-10d\n" 11 12; printf "%10.5f\n" 17.2;

14 Aritmetik İşlemler Kabuk programlarında aritmetik işlemler için let komutu veya (( )) karakter grubu kullanılabilir. Toplama için +, çıkarma için -, çarpma için *, bölme için /, üs alma için ** ve kalan bulmak için % operatörleri kullanılır. (Bir sonraki slayttaki programı Aritmetik.sh adlı dosyanın içerisine yazınız. Satır başlarındaki rakamları kullanmayınız. O satırlar programı açıklamak üzere eklenmiştir.)

15 Aritmetik.sh 01 #!/bin/bash 02 #Değişken tanımlamaları 03 a=5; 04 b=3; 05 #Doğrudan hesaplama 06 ((sonuc=a+b)); 07 echo $sonuc; 08 #'let' komutu ile toplama 09 let sonuc=a+b; 10 echo $sonuç; 11 #'let' komutu ile çarpma 12 let sonuc=a*b; 13 echo $sonuc;

16 Aritmetik.sh 3. ve 4. satırlarda a ve b değişkenlerine başlangıç değerleri, 6. satırda ise sonuc değişkenine a ve b değişkenlerinin toplamı atanmıştır. Aritmetik işlemler (( )) arasında değişkenlerin değerlerini okumak amacıyla ihtiyaç duyduğumuz $ işaretsiz gerçekleştirilebilirler. let komutu ile de aritmetik işlemler gerçekleştirilebilir. 9. satırda a ve b değişkenlerinin değeri toplanarak sonuc değişkenine atanmıştır. 12. satırda ise let komutu kullanılarak çarpma işlemine bir örnek verilmiştir. Hesaplamalardan sonra echo komutuyla sonuçlar ekrana yazdırılmıştır. ddal@pardus2011 scripts $./Aritmetik.sh 8 15

17 bc Komutu (basic calculator) $echo "57+43"|bc 100 $echo " 57-43 " |bc 14 $echo " 57*43 " |bc 2451 $echo "scale=25;57/43"|bc 1.325581395348837209302 3255 $echo "scale=30;sqrt(2)"|bc 1.414213562373095048801 688724209 $echo "6^6^6"|bc $echo "(7+6)*5"|bc 65 $echo "obase=16;255"|bc FF $echo "obase=2;12"|bc 1100 $echo "ibase=2;obase=A;10"|bc 2 $echo "ibase=2;obase=A;10000001"|bc 129 $echo " ibase=16;obase=A;FF " |bc 255 $sayi=5;echo "$sayi^2"|bc 25 $sayi=16;echo "$sayi/3"|bc -l 5.33333333333333333333 $a=22 $b=7 $echo "$a/($b-34)"|bc -l -.81481481481481481481 http://www.basicallytech.com/blog/?/archives/23-command-line-calculations-using-bc.html -l seçeneği scale değişkenine varsayılan olarak 20 değerini atayan matematik kütüphanesini çağırır.


"BMS-301 Kabuk Programlama Güz 2015 (5. Sunu) (Yrd. Doç. Dr. Deniz Dal)" indir ppt

Benzer bir sunumlar


Google Reklamları