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
Ö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
[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
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