29
Konuya ait anahtar kelimeler : Unix/Linux Fonksiyonlar Diğer programlama dillerinde olduğu gibi Unix/Linux sistemlerde de fonksiyonlar yazabilirsiniz. Fonksiyonun tanımını kısaca, "Belirli komutların kümelenmiş halde bulunduğu söz öbeklerinden oluşan yapılardır." şeklinde yapabiliriz. Yani bir isme sahip komutlar dizisidir. Fonksiyon tanımlama; function fonksiyon_adi { Komutlar.... } yada fonksiyon_adi () { Komutlar.... } olarak iki şekilde olmaktadır. Şimdi "fonksiyon.sh" adında bir script dosyası oluşturalım ve bu script içerisinde bir fonksiyon tanımlayarak kullanalım. Script dosyası içeriği aşağıdaki gibi olacaktır.
[alax@alax script]$ cat fonksiyon.sh #!/bin/bash # fonksiyon.sh # Fonksiyon tanımlama örneği. carpma () { degisken=$(($1*$2)) echo $degisken } carpma 12 13 [alax@alax script]$
Scripti çalıştıralım.
[alax@alax script]$ chmod u+x fonksiyon.sh [alax@alax script]$ ./fonksiyon.sh 156 [alax@alax script]$
Evet iki sayının çarpımını veren fonksiyonumuz çalıştı. Şimdi sistemimizde kayıtlı olan ve başka bir script dosyasına gerek kalmadan BASH komut satırında fonksiyon adını yazarak kullanacağımız bir fonksiyon tanımlayalım. Bu işlemi tabiki ".bashrc" dosyasında yapmamız gerekmektedir. ".bashrc" dosyasını açarak en altına bir fonksiyon tanımı yapalım. Fonksiyonumuz girilen sayının faktöriyelini ekrana yazdırsın. Fonksiyonumuz şu şekilde olacaktır.
fak () { sayi=$1 sonuc=1 while [ $sayi -gt 0 ] do sonuc=$(( $sonuc * $sayi )) sayi=$(( $sayi - 1 )) done echo $sonuc }
Şimdi bu fonksiyonu "~/.bashrc" dosyamıza alta ekleyelim. Bu işlemi yaparken dikkatli olun, fonksiyonun en altta olduğuna emin olun. Son haliyle "~/.bashrc" dosyası aşağıdaki şekilde görünecektir.
[alax@alax script]$ cat ~/.bashrc # # ~/.bashrc # # If not running interactively, don't do anything [[ $- != *i* ]] && return alias ls='ls --color=auto' PS1='[\u@\h \W]\$ »» ' alias tux='echo Penguen' alias cdd='cd ~/tux/script' fak () { sayi=$1 sonuc=1 while [ $sayi -gt 0 ] do sonuc=$(( $sonuc * $sayi )) sayi=$(( $sayi - 1 )) done echo $sonuc } [alax@alax script]$
Şimdi yeni bir Terminal açalım ve fonksiyonu deneyelim.
[alax@alax script]$ fak 5 120 [alax@alax script]$ fak 12 362880 [alax@alax script]$
Fazla büyük sayılar denemeyiniz. Fonksiyonların genel anlamda çalışma prensibi bu şekilde olmaktadır. İleriki derslerimizdeki örneklerde daha karmaşık fonksiyon tanımları yapacağız.