Bash fonksiyonları, birbiriyle ilişkili komutları tek bir ad altında toplar. O adı çağırdığınızda tüm blok çalışır. Davranışı özelleştirmek için argüman, sonuçları iletmek için de dönüş değeri kullanabilirsiniz. Bu yapı kodunuzu temiz ve bakımı kolay tutar.
Linux sunucu ortamlarına küresel ölçekte hâkimdir; bu yüzden Bash fonksiyonlarına hâkim olmak her zamankinden daha önemli. Fonksiyonlar, karmaşık scriptleri temiz ve yeniden kullanılabilir otomasyon yapılarına dönüştürür.
Bu rehber, temel sözdiziminden ileri düzey kullanım senaryolarına kadar her şeyi ele alır. Fonksiyon tanımlamayı, parametre geçirmeyi, dönüş değerlerini yönetmeyi öğrenecek ve kendi scriptlerinizde kullanabileceğiniz on pratik örnek göreceksiniz.
Kısaca
- Bash fonksiyonları, scriptleriniz genelinde yeniden kullanabileceğiniz adlandırılmış kod bloklarıdır.
- Fonksiyonları şu sözdizimi ile tanımlayın: function_name() { commands; } sözdizimi
- Şunu kullanarak argüman geçirin: $1, $2, $3 konumsal parametreler
- Fonksiyonlar, kodun okunabilirliğini, modülerliğini ve bakımını kolaylaştırır
- Kullan return Fonksiyonlardan çıkmak ve durum kodlarını iletmek için (0 = başarı, sıfır dışı = hata)
- Fonksiyonlar, şu yöntemlerle betikler arasında paylaşılabilir: source or export -f
- Pratik kullanım örnekleri arasında dosya yedekleme, disk izleme, girdi doğrulama ve servis kontrolü yer alır
Bash Scripting Nedir?

Bash scripting, Bash kabuğunu kullanarak görevleri otomatikleştirme yöntemidir. Linux için varsayılan komut satırı arayüzü olarak görev yapar ve macOS üzerinde standart bir araç olmaya devam eder. Bash betiği, bir terminalde ya da bağımsız bir betik dosyası olarak çalıştırılabilen, Bash scripting diliyle yazılmış bir programdır.
İle Linux masaüstü kullanımı sürekli artıyor ve işletim sistemi dünya genelinde sunucu ortamlarına hâkim olurken, Bash scripting becerileri BT profesyonelleri için giderek daha değerli hale geliyor. Bu dil, Docker, Kubernetes ve CI/CD pipeline'ları gibi DevOps araçlarıyla iyi entegre olur.
Bash scripting, basit komutlardan karmaşık otomasyon ve sistem yönetimine kadar geniş bir yelpazede işlem yapmanıza olanak tanır. Tekrarlayan görevleri otomatikleştirebilir, bakım betikleri yazabilir, dağıtım pipeline'ları kurabilir, yazılım sistemlerini yönetebilir ve veri işleyebilirsiniz.
Bash Fonksiyonu Nedir?

Bir Bash fonksiyonu, kullanım senaryosuna bağlı olarak bir Bash betiği içinde tanımlanmış ya da komut isteminde etkileşimli olarak girilmiş bir komutlar kümesi olarak tanımlanabilir. Bir kez tanımlandıktan sonra, Bash fonksiyonu tıpkı sıradan bir kabuk komutu gibi aynı betik içinde veya başka betiklerde defalarca çağrılabilir.
Bash fonksiyonları, karmaşık işlemler gerçekleştirebilen, kodunuzu düzenleyen ve betiklerinizi sadeleştiren yeniden kullanılabilir kod blokları oluşturmanıza imkân tanır. Bir Bash fonksiyonuna argümanlar geçirebilir, ardından bu argümanları fonksiyon içinde işlemlerde kullanabilirsiniz. Bash fonksiyonları, betiğinizin başka yerlerinde kullanabileceğiniz değerler döndürür.
Birkaç farklı uygulama stilini ele alacağız; bunlar arasında şunlar yer alıyor: simple_function temel mantık için, simple_inputs argüman işleme için ve şunlar gibi gelişmiş yapılar: fibonnaci_recursion.
Bash fonksiyonlarının temelleri otomasyon üzerine çalışan her sistem yöneticisi veya DevOps mühendisi için önemlidir. Aşağıdaki bölümlerde bu türlerin her biri ayrıntılı olarak ele alınmaktadır.
Bash Fonksiyonları Neden Kullanılır?

Bash fonksiyonlarının ne olduğunu anladığımıza göre, şimdi başlıca avantajlarına bakalım. Bu bölüm, fonksiyonların en çok nerede işe yaradığını anlamanıza yardımcı olur.
Yeniden Kullanılabilirlik
Bir Bash fonksiyonu oluşturduğunuzda elinizde güçlü bir araç olur. Bir kod bloğunu bir kez yazıp aynı script içinde veya farklı scriptlerde defalarca kullanabilirsiniz.
Bu sayede kodunuz daha verimli hale gelir ve tekrarı ortadan kaldırarak zaman kazanırsınız. Değişiklik yapmanız gerektiğinde yalnızca fonksiyonu tek bir yerden güncellemeniz yeterli olduğundan bakım da kolaylaşır.
Okunabilirlik
Karmaşık scriptleri anlamak zorlaşabilir. Bash fonksiyonları, scripti daha küçük ve yönetilebilir parçalara bölerek bu sorunu çözer.
Her fonksiyonun amacını açıklayan açıklayıcı bir adı vardır ve belirli bir görevi yerine getirir. Bu, hem sizin hem de diğer geliştiricilerin kodu daha kolay anlamasını ve bakımını yapmasını sağlar.
Modülerlik
Fonksiyonlar kodunuzu düzenler. Mantığı daha küçük modüllere bölebilirsiniz; bu da script yapınızı temiz ve yönetimi kolay tutar.
Yeni bir özellik eklemeniz gerektiğinde bunu scriptin geri kalanına dokunmadan yapabilirsiniz. Bir işlevi kaldırmanız veya değiştirmeniz gerektiğinde de scriptin diğer bölümleri etkilenmez.
Bash Fonksiyon Parametreleri
Fonksiyonlarınıza argüman, yani parametre geçirebilirsiniz. Bu argümanlar, fonksiyonlarınızın aldığı girdilere göre farklı işlemler gerçekleştirmesini sağlar.
Bu, fonksiyonlarınızı çok daha esnek ve uyarlanabilir hale getirirken önünüzde pek çok olasılık açar. Benzer kodu defalarca yazmak yerine, farklı girdileri işleyen tek bir fonksiyon yazarsınız.
Bash Fonksiyonları Nasıl ve Nerede Kullanılır?

Şimdi biraz daha teknik konulara geçip Bash fonksiyonlarının nasıl oluşturulduğuna dair kısa bir örnek ile başlayalım. Aşağıdaki sözdizimi Unix tabanlı ortamlarda kullanılabilir. Windows üzerinde çalışıyorsanız bu örnekleri takip etmek için Windows 10'a Linux Bash yükleyebilirsiniz .
Bash Fonksiyonu Oluşturma
Aşağıdaki komut yapısını kullanarak başlayın:
function_name () {
# komutlar buraya gelecek
}
Fonksiyonu oluşturduktan sonra, kodunuzda istediğiniz zaman kullanabilirsiniz. Çalışan bir örnek:
greet () {
echo "Hello, $1!"
}
Bu fonksiyonu şu şekilde çağırın: Dünyaya Merhaba çıktı olarak "Hello, World!" almak için. $1 fonksiyona geçirilen ilk argümanı temsil eder.
Kendi scriptlerinizde kullanabileceğiniz birkaç pratik örnek daha:
# Herhangi bir dosyanın yedeğini al
backup_file () {
cp "$1" "$1.bak"
echo "Yedek oluşturuldu: $1.bak"
}
# Dizinin var olup olmadığını kontrol et, yoksa oluştur
ensure_dir () {
if [ ! -d "$1" ]; then
mkdir -p "$1"
echo "Dizin oluşturuldu: $1"
fi
}
# Zaman damgalı log mesajları yaz
log_message () {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
Bu özel Bash fonksiyonlarını bir kez tanımlayıp scriptiniz boyunca ihtiyaç duydukça çağırabilirsiniz.
Fonksiyon Sözdiziminin Temelleri
Fonksiyonlar, ana scriptiniz içinde bağımsız mini-scriptler gibi çalışır; ancak shell'in belleğini paylaşırlar. Yazarken şu üç davranışı aklınızda bulundurun.
Değişken Kapsamı (Yerel ve Global)
Fonksiyonlar içindeki değişkenler varsayılan olarak globaldir. Eğer my_var="test" ifadesini bir fonksiyon içinde tanımlarsanız, scriptteki mevcut my_var değerinin üzerine yazar. Yan etkileri önlemek için değişkenleri fonksiyon kapsamında tutmak adına her zaman local kullanın:
local my_var="value"
Konumsal Parametreler
Fonksiyonlar, argümanlara scriptlerle aynı $1, $2ve $@ değişkenleri aracılığıyla erişir. Bu değişkenler fonksiyona özgüdür ve fonksiyon sonlandığında sıfırlanır. Scriptin orijinal argümanlarına, fonksiyon içinden açıkça iletilmedikçe erişilemez.
Dönüş Değerleri
Bash fonksiyonları, Python veya JavaScript fonksiyonları gibi veri döndürmez. return komutu yalnızca başarı ya da başarısızlığı belirtmek için bir çıkış durumu (0-255) ayarlar. Gerçek veri döndürmek için (string veya hesaplama sonucu gibi), echo ile sonucu yazdırın ve fonksiyonu çağırırken yakalayın:
result=$(my_function)
En Kullanışlı 10 Bash Fonksiyonu Örneği
Bash fonksiyonlarını ve nasıl oluşturulacağını anladığınıza göre, scriptlerinize ekleyebileceğiniz on pratik örnek aşağıda verilmiştir. Her fonksiyon yaygın bir sorunu çözer; doğru yapıyı, argüman kullanımını ve dönüş değerlerini gösterir.
1. Dosya Yedekleme Fonksiyonu
Herhangi bir dosyanın zaman damgalı yedeğini oluşturur:
backup_file () {
local file="$1"
local backup="${file}.$(date +%Y%m%d_%H%M%S).bak"
if [ -f "$file" ]; then
cp "$file" "$backup"
echo "Backup created: $backup"
return 0
else
echo "Error: File not found"
return 1
fi
}
Kullanım: backup_file /etc/nginx/nginx.conf
2. Dizin Denetleyicisi
Bir dizinin var olup olmadığını kontrol eder, yoksa oluşturur:
ensure_dir () {
local dir="$1"
if [ ! -d "$dir" ]; then
mkdir -p "$dir"
echo "Created: $dir"
fi
}
Kullanım: ensure_dir /var/log/myapp
3. Zaman Damgalı Günlükleyici
Hata ayıklama için log mesajlarına zaman damgası ekler:
log_message () {
local level="$1"
local message="$2"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message"
}
Kullanım: log_message "INFO" "Script started"
4. Disk Alanı İzleyicisi
Disk kullanımını kontrol eder ve belirlenen eşiği aşarsa uyarı verir:
check_disk_space () {
local threshold="${1:-80}"
local usage=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
if [ "$usage" -gt "$threshold" ]; then
echo "Warning: Disk usage at ${usage}%"
return 1
fi
return 0
}
Kullanım: check_disk_space 90
5. Girdi Doğrulayıcı
Kullanıcı girdisinin boş olmadığını doğrular:
validate_input () {
local input="$1"
local name="$2"
if [ -z "$input" ]; then
echo "Error: $name cannot be empty"
return 1
fi
return 0
}
Kullanım: validate_input "$username" "Username"
6. Servis Durum Denetleyicisi
Bir servisin çalışıp çalışmadığını kontrol eder ve durumu raporlar:
check_service () {
local service="$1"
if systemctl is-active --quiet "$service"; then
echo "$service is running"
return 0
else
echo "$service is not running"
return 1
fi
}
Kullanım: check_service nginx
7. Dosya Uzantısı Çıkarıcı
Bir dosya adından uzantıyı çıkarır:
get_extension () {
local filename="$1"
echo "${filename##*.}"
}
Kullanım: ext=$(get_extension "document.pdf")
8. Dize Kırpıcı
Dizelerden baştaki ve sondaki boşlukları kaldırır:
trim_string () {
local str="$1"
str="${str#"${str%%[![:space:]]*}"}"
str="${str%"${str##*[![:space:]]}"}"
echo "$str"
}
Kullanım: clean=$(trim_string " hello world ")
9. Güvenli Dosya Arşivleyici
Bir dosyayı kalıcı olarak silmek yerine özel bir $HOME/.trash dizinine taşır. Önceki yedeklerin üzerine yazılmasını önlemek için dosya adına zaman damgası ekler.
safe_remove() {
local file="$1"
local trash="$HOME/.trash"
# Mevcut dosyaların üzerine yazmamak için zaman damgası ekle
local new_name="$(basename "$file")_$(date +%s)"
mkdir -p "$trash"
if [ -e "$file" ]; then
mv "$file" "$trash/$new_name"
echo "Arşive taşındı: $file -> $trash/$new_name"
else
echo "Hata: $file bulunamadı"
return 1
fi
}
Kullanım: safe_remove old_script.sh
10. Durum Raporlayıcı
Hata yönetimi için Bash fonksiyon dönüş mekanizmasını gösterir. Bash fonksiyonunun dönüş değeri başarıyı (0) veya başarısızlığı (sıfır dışı) belirtir:
process_data () {
local file="$1"
if [ ! -f "$file" ]; then
return 1
fi
# Dosyayı işle
cat "$file" | wc -l
return 0
}
# Dönüş değerini kontrol et
process_data "data.txt"
if [ $? -eq 0 ]; then
echo "İşlem tamamlandı"
else
echo "İşlem başarısız oldu"
fi
Bu $? değişkeni, son komutun veya fonksiyon çağrısının çıkış durumunu yakalar.
| Fonksiyon | Amaç | Temel Özellik |
| backup_file | Dosya yedeklerini oluşturur | Zaman damgalı isimlendirme |
| ensure_dir | Dizin yönetimi | Yoksa oluşturur |
| log_message | Günlükleme | Zaman damgası öneki |
| check_disk_space | Sistem izleme | Eşik uyarıları |
| validate_input | Girdi doğrulama | Boş dize kontrolü |
| check_service | Servis izleme | Systemd entegrasyonu |
| get_extension | Dizi ayrıştırma | Parametre genişletme |
| trim_string | Dizi temizleme | Boşluk kaldırma |
| safe_remove | Güvenli silme | Çöp dizini |
| process_data | Hata yönetimi | Dönüş değerleri |
VPS Üzerinde Bash Fonksiyonları Çalıştırma
Bash fonksiyonları, özel bir sunucu ortamında çalıştırıldığında çok daha güçlü bir hal alır. Linux VPS size tam root erişimi sağlar; böylece shell ortamınızı özelleştirebilir, sistem genelinde fonksiyon kütüphaneleri oluşturabilir ve sunucu yönetim görevlerini kısıtlama olmaksızın otomatikleştirebilirsiniz.
VPS ile yeniden kullanılabilir fonksiyonlarınızı /etc/profile.d/ dizininde tüm kullanıcılar için saklayabilir, cron işleriyle fonksiyon tabanlı scriptleri zamanlayabilir ve dağıtım ile bakım için otomasyon süreçleri kurabilirsiniz. 12 farklı konumda, 40 Gbps'e kadar ağ hızı ve DDR5 bellek kapasitesiyle sunucular sunuyoruz; bu da script çalıştırma hızını ve veri işleme performansını doğrudan artırır.
Bu düzeyde kontrol, shell scripting ve sistem otomasyonunu ciddiye alan herkes için VPS'yi ideal bir seçenek haline getirir.
Sonuç
Bash fonksiyonları, modüler ve yeniden kullanılabilir scriptler oluşturmanın temelidir. İlgili komutları bir arada gruplandırmanıza ve karmaşık mantığı kapsüllemenize olanak tanır; bu sayede kodunuz daha okunabilir ve bakımı daha kolay hale gelir. Bulut altyapısı yönetiyorsanız, dağıtım süreçlerini otomatikleştiriyorsanız ya da rutin sistem yönetim görevlerini üstleniyorsanız, fonksiyonlar scriptlerinizi düzenli ve verimli tutar.
Bu makalede Bash fonksiyonlarının temellerini ele aldık: fonksiyonların nasıl tanımlanıp çağrıldığını, on pratik fonksiyon örneğini ve kendi otomasyon projelerinize başlamanıza yardımcı olacak yaygın kullanım senaryolarını inceledik.
Aşağıdaki gibi kontrol yaplarıyla birleştirildiğinde Bash if ifadesi, fonksiyonlar güçlü otomasyon için temel yapı taşlarını sunar. Bash fonksiyonlarını betiklerinizde kullanarak daha temiz, daha modüler kod yazabilir; bu da kodu anlamayı ve bakımını yapmayı kolaylaştırır.