Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanTurgay Ceren Değiştirilmiş 9 yıl önce
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. scripts $ chmod u+x Merhaba.sh
4
Hatırlatma 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. scripts $ ./Merhaba.sh Merhaba Dünya Yazdığınız kabuk programına çalıştırma hakkı vermeden de bash komutuyla çalıştırabilirsiniz. scripts $ bash Merhaba.sh On Unix, usually, the current directory is not in $PATH. When you type a command the shell looks up a list of directories, as specified by the PATH variable. The current directory is not in that list. The reason for not having the current directory on that list is security. The ./ says 'look in the current directory for my script rather than looking at all the directories specified in $PATH'.
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. /$ /home/ddal/scripts/Merhaba.sh Merhaba Dünya ~$ ./scripts/Merhaba.sh
7
Merhaba Dünya 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 scripts $ kullaniciYasi=33 scripts $ kullaniciAdi="Deniz DAL" scripts $ scripts $ echo $kullaniciYasi 33 scripts $ echo $kullaniciAdi Deniz DAL scripts $ echo $kullanici i Yukarıda kullaniciYasi, kullaniciAdi ve kullanici i 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. scripts $ chmod u+x DegerOku.sh 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" ; printf "%10d\n" 11; printf "%-10d %-10d\n" ; printf "%10.5f\n" ;
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. 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 $echo "scale=30;sqrt(2)"|bc $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; "|bc 129 $echo "ibase=16;obase=A;FF"|bc 255 $sayi=5;echo "$sayi^2"|bc 25 $sayi=16;echo "$sayi/3"|bc -l $a=22 $b=7 $echo "$a/($b-34)"|bc -l -l seçeneği scale değişkenine varsayılan olarak 20 değerini atayan matematik kütüphanesini çağırır.
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.