%50 indirim tüm planlarda, sınırlı süre. Başlangıç fiyatı $2.48/mo
11 dk kaldı
Sunucular ve İşletim Sistemleri

Bash Fonksiyonları: Sözdizimi, Örnekler ve Kullanım Senaryoları

Kelly Watson By Kelly Watson 11 dakika okuma 14 Ara 2025 tarihinde güncellendi
Bash fonksiyonlarını temsil eden, modüler bir yapıya dönüşen mavi ışıltılı kod bloklarından oluşan soyut 3D illüstrasyon

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 otomasyonunu temsil eden, üzerine parlayan Bash kodu yazılan dijital bir tomarın 3D çizimi.

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 fonksiyonunun nasıl çalıştığını simgeleyen, dağınık komut satırı verisinin parlayan bir işlem geçidinden geçerek düzenlendiğini gösteren fütüristik dijital illüstrasyon; solda boş alan bırakılmış.

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 sağladığı verimlilik ve hızı temsil eden, optimizasyon sembolleriyle süslenmiş mavi parlayan bir dişli ve kod makinesi.

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?

Bash fonksiyonlarının mantık akışında nasıl kullanıldığını görselleştiren, bir fonksiyon bloğuna dallanıp geri dönen script yürütmeyi gösteren 3D cam akış şeması.

Ş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.

SSS

Bash fonksiyonlarında yerel değişkenler kullanılabilir mi?

Evet. Bash fonksiyonlarında local anahtar kelimesiyle yerel değişkenler tanımlanabilir. Bu, değişkenin kapsamını fonksiyonla sınırlar ve fonksiyon dışındaki aynı isimli değişkenleri etkilemesini engeller.

Bash fonksiyonları özyinelemeli olabilir mi?

Evet, Bash fonksiyonları özyinelemeli olabilir. Ancak Bash'in varsayılan çağrı yığını boyutu oldukça küçüktür; bu nedenle düşündüğünüz özyinelemeli fonksiyonlara bağlı olarak, çalıştırmadan önce ulimit -s komutuyla bu boyutu artırmanız gerekebilir.

Bash fonksiyonlarını başka betiklerde kullanabilir miyim?

Evet, Bash fonksiyonlarını source komutuyla (ya da kısaltması olan . ile) betikler arasında paylaşabilirsiniz. Fonksiyon tanımlarını içeren bir dosyayı kaynaklayarak bu fonksiyonları çağıran betik içinde kullanılabilir hale getirirsiniz. Alt süreçler için ise fonksiyonu erişilebilir kılmak amacıyla export -f function_name komutunu kullanın.

Bash fonksiyonlarını pipeline içinde kullanabilir miyim?

Evet, ancak harici komutlar için birkaç ek adım gerekir. Bir betik içinde, veriyi doğrudan bir fonksiyona pipe edebilirsiniz (örneğin cat file | my_function). Bununla birlikte, xargs veya find -exec gibi komutlar yeni bir ortamda çalışır. Fonksiyonu burada kullanmak için önce dışa aktarmanız (export -f my_func), ardından Bash'i açıkça çağırmanız gerekir (örneğin xargs bash -c 'my_func "$@"').

Shell betiği fonksiyonu nedir?

Shell betiği fonksiyonu, belirli bir amaca hizmet eden ve betiğin farklı yerlerinden çağrılabilen, tanımlanmış bir kod bloğudur. Fonksiyonlar; kod modülerliği, yeniden kullanılabilirlik ve bakım kolaylığı açısından büyük avantaj sağlar. Bash betik yazımı bağlamında fonksiyonlar, genel betiğin içine kapsüllenir.

Paylaş

Blogdan daha fazlası

Okumaya devam et.

Cosmos Cloud ile Çalıştırabileceğiniz En İyi Kendi Hostinginizi Yönettiğiniz Uygulamalar - uygulama panelleri ve Cosmos kontrol paneli ile kapak görseli.
Sunucular ve İşletim Sistemleri

Cosmos Cloud ile Çalıştırabileceğiniz En İyi Kendi Sunucusunda Barındırılan Uygulamalar: Dosyalar, Medya, Parolalar, Otomasyon ve Daha Fazlası!

Maybe Cosmos Cloud kurulumunu tamamladın ve hangi uygulamaların bununla iyi çalıştığını görmek istiyorsun ya da henüz Cosmos'a karar vermemiş olabilirsin ve iş akışına ne kadar uyduğunu öğrenmek istiyorsun

Nick GümüşNick Gümüş 16 dakikalık okuma
Portainer ile Cosmos Cloud'nin Docker Uygulamalarını Yönetmek İçin Karşılaştırması: Hibrit kurulum diyagramı ve neon ops ile erişim bloklarını içeren kapak görseli.
Sunucular ve İşletim Sistemleri

Portainer mı Cosmos Cloud mi: Docker Uygulama Yönetimi İçin Hangisi Daha Uygun?

Docker'yi zaten biliyorsanız ve büyüyen bir uygulama yığınını daha düzenli bir şekilde çalıştırmanın yolunu arıyorsanız, Portainer ile Cosmos Cloud karşılaştırmasının kısa yanıtı şu: Doğrudan yönetim için Portainer daha güçlü bir seçenek.

Nick GümüşNick Gümüş 14 dakika okuma
Cosmos Cloud, CasaOS ve Umbrel özellik görseli: Soyut bir bulut ağı dünyasında üç farklı self-hosted yolu bir arada gösteriyor.
Sunucular ve İşletim Sistemleri

Cosmos Cloud mı, CasaOS mi, Yoksa Umbrel mi: Kurulumunuza En Uygun Self-Hosted Platform Hangisi?

Kısa yanıt şu: CasaOS başlamak için hâlâ en kolay seçenek, Umbrel en temiz ve derli toplu deneyimi sunuyor; Cosmos Cloud ise alan adları ve altyapı üzerinde daha sıkı bir kontrol istediğinizde anlam kazanıyor.

Nick GümüşNick Gümüş 11 dakika okuma

Dağıtmaya hazır mısınız? Aylık 2,48 dan başlayan fiyatlarla.

2008'den bu yana bağımsız bulut. AMD EPYC, NVMe, 40 Gbps. 14 gün para iade garantisi.