1 Ocak 2015 Perşembe

Bash Script Uygulamaları - 1

Merhaba

Daha önce kabuk programlamaya giriş yapmıştık. Dileyenler buradan bakabilirler. Şimdi biraz öğrendiklerimizle neler yapabileceğimiz bakalım.

Yazdığımız scriptlerin sorunsuz bir şekilde çalışması için scriptlerin bulunduğu dizini $PATH değişkenine tanımlamamız gerekiyor.
Bunun için önce ev dizini altında " scripts "isimli bir klasör oluşturalım.
melih@localhost ~ $ pwd
/home/melih
melih@localhost ~ $ mkdir scripts

Daha sonra " .bash_profile " dosyasındaki $PATH değişkenini düzenliyoruz.

[melih@localhost ~]$ vi .bash_profile 
[melih@localhost ~]$ cat .bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/home/melih/scripts

export PATH
[melih@localhost ~]$ . .bash_profile

Yukarda görüldüğü gibi /home/kullanıcı adı dizini altındaki scripts klasörünü $PATH değişkenine ekliyoruz. " . .bash_profile " ile yaptığımız değişikliklerin aktif hale getiriyoruz. 

Not : .bash_profile bazı linux sürümlerinde başka bir isimde olabilir. Kullandığınız dağıtıma göre bash_profile konumu bulup gerekli değişiklikleri yapınız.

1. Sistemim hangi bash ile çalışmaktatır?

[melih@localhost ~]$ ps
  PID TTY          TIME CMD
 2647 pts/0    00:00:00 bash

2. Yazdığınız scripti çalıştırdığınız zaman ekrana "Merhaba Dünya" yazsın.

Home dizini altındaki scripts klasörü altında ilk.sh isimli bir dosya oluşturuyoruz ve dosya içeriğimizde aşağıdaki gibi olmalıdır. Eğer ilk.sh yazıp çalıştırdığımızda permission hatası alıyorsanız chmod komutu ile ilk.sh dosyasına çalıştırma izni vermelisiniz. Ya da komut satırına "bash ilk.sh" yazdığınızda sorunsuzca çalıştırabilirsiniz.

[melih@localhost scripts]$ vi ilk.sh 
[melih@localhost scripts]$ cat ilk.sh 
#!/bin/bash
echo "Merhaba Dünya"
[melih@localhost scripts]$ ilk.sh
Merhaba Dünya
[melih@localhost scripts]$ chmod +x ilk.sh

3. Çalıştığı zaman sonuc.txt isminde bir dosya oluşturup içine Merhaba Dünya yaz sonra yine aynı dosyada Merhaba kullanıcıadı diye o anda sisteme bağlı kullanıcının adını yaz.

Önce merhaba.sh isimli bir script oluşturalım. İçeriğide aşağıdaki gibi olmalıdır.

[melih@localhost scripts]$ vi merhaba.sh
[melih@localhost scripts]$ cat merhaba.sh 
#!/bin/bash
echo "Merhaba Dünya" > sonuc.txt
echo "Merhaba $USER" >> sonuc.txt
[melih@localhost scripts]$ bash merhaba.sh 
[melih@localhost scripts]$ cat sonuc.txt 
Merhaba Dünya
Merhaba melih

4. Scripts dizini altında " deneme " dizini mevcutsa deneme dizini altında sonuc.txt isimli bir dosya oluştur ve içine Merhaba Dünya yazdır. Eğer deneme dizini mevcut değilse deneme dizinini oluştur ve sonuc2.txt dosyasına Merhaba Dünya yazdır.

[melih@localhost scripts]$ vi dizin.sh
[melih@localhost scripts]$ cat dizin.sh 
#!/bin/bash
if [ -d /deneme ]
then
 echo "Merhaba Dünya" > deneme/sonuc.txt
else
 mkdir deneme
 echo "Merhaba Dünya" > deneme/sonuc2.txt
fi
[melih@localhost scripts]$ bash dizin.sh 
[melih@localhost scripts]$ cd deneme/
[melih@localhost deneme]$ ls
sonuc2.txt
[melih@localhost deneme]$ cat sonuc2.txt 
Merhaba Dünya

5. Kullanıcıdan 2 sayı girmesini isteyin ve girilen bu sayıları x sayısı büyüktür y sayısından, x sayısı küçüktür y sayısından ya da x sayısı eşittir y sayısına gibi çıktılar verecek bir script yazınız.

Daha iyi kavrayabilmek için if kalıbını 2 farklı şekilde kullanarak bu soruyu çözmeye çalışalım.

[melih@localhost scripts]$ vi karsilastirma.sh 
[melih@localhost scripts]$ cat karsilastirma.sh 
#!/bin/bash
echo -n "Bir sayı giriniz:"
read sayi1
echo -n "ikinci sayıyı giriniz:"
read sayi2
if [ $sayi1 -lt $sayi2 ]
then
 echo "$sayi1 sayısı $sayi2 sayısından küçüktür."
else
 if [ $sayi1 -gt $sayi2 ]
 then
  echo "$sayi1 sayısı $sayı2 sayısından büyüktür."
 else
  echo "$sayi1 sayısı $sayi2 sayısına eşittir."
 fi
fi
[melih@localhost scripts]$ bash karsilastirma.sh 
Bir sayı giriniz:3
ikinci sayıyı giriniz:8
3 sayısı 8 sayısından küçüktür.
[melih@localhost scripts]$ vi karsilastirma2.sh 
[melih@localhost scripts]$ cat karsilastirma2.sh 
#!/bin/bash
echo -n "Bir sayı giriniz:"
read sayi1
echo -n "ikinci sayıyı giriniz:"
read sayi2
if [ $sayi1 -lt $sayi2 ]
then
 echo "$sayi1 sayısı $sayi2 sayısından küçüktür."
elif [ $sayi1 -gt $sayi2 ]
then
 echo "$sayi1 sayısı $sayı2 sayısından büyüktür."
else
 echo "$sayi1 sayısı $sayi2 sayısına eşittir."
 fi
[melih@localhost scripts]$ bash karsilastirma2.sh 
Bir sayı giriniz:5
ikinci sayıyı giriniz:5
5 sayısı 5 sayısına eşittir.

Bu yazımın da sonuna geldim. Yazdıklarımda anlaşılmaya yerler varsa mutlaka yazımın başında da belirttiğim kabuk programlamaya giriş yazısını okumanızı tavsiye ederim. Eğer yaptıklarımda hata, yanlış, eksik bir yer görürseniz ya da anlaşılmayan yerler olursa benimle iletişime geçmekten çekinmeyin. Unutmayınki bende sizlerle beraber öğreniyorum. Bu işte usta veya uzman konumunda biri değilim. Önce kendim bir şeyler öğrenmeye çalışıyor daha sonra blog tutarak bu işi seven diğer insanlarada yardımcı olmak istiyorum.

İyi çalışmalar..



































Hiç yorum yok:

Yorum Gönder