Bash işlevleri ilgili komutları tek bir ad altında gruplandırır. Bu adı çağırdığınızda bloğun tamamı yürütülür. Davranışı özelleştirmek için argümanları iletebilir ve sonuçları iletmek için değerleri döndürebilirsiniz. Bu, kodunuzu temiz ve bakımı kolay tutar.
Linux sunucu ortamlarına dünya çapında hakim olduğundan, Bash işlevlerine hakim olmak artık her zamankinden daha önemli. İşlevler, karmaşık komut dosyalarını temiz, yeniden kullanılabilir otomasyona dönüştürür.
Bu kılavuz, temel söz diziminden ileri düzey kullanım örneklerine kadar size yol gösterir. İşlevleri nasıl bildireceğinizi, parametreleri nasıl aktaracağınızı, dönüş değerlerini nasıl ele alacağınızı öğrenecek ve kendi komut dosyalarınızda kullanabileceğiniz on pratik örneği göreceksiniz.
TL;DR
- Bash işlevleri, komut dosyalarınız boyunca yeniden kullanabileceğiniz kod blokları olarak adlandırılır
- İşlevleri kullanarak tanımlayın işlev_adı() { komutlar; } sözdizimi
- Kullanarak bağımsız değişkenleri iletin $1, $2, $3 konumsal parametreler
- İşlevler kodun okunabilirliğini, modülerliğini ve bakımını iyileştirir
- Kullanmak geri dönmek işlevlerden çıkmak ve durum kodlarını iletmek için (0 = başarı, sıfırdan farklı = başarısızlık)
- İşlevler komut dosyaları arasında aşağıdakiler kullanılarak paylaşılabilir: kaynak or dışa aktarma -f
- Pratik örnekler arasında dosya yedekleme, disk izleme, giriş doğrulama ve hizmet kontrolü yer alır
Bash Komut Dosyası Nedir?

Bash komut dosyası oluşturma, Bash kabuğunu kullanan bir görev otomasyonu yöntemidir. Linux için varsayılan komut satırı arayüzü görevi görür ve macOS'ta standart bir araç olarak kalır. Bash betiği, Bash betik dilinde kodlanmış, bir terminalde veya bağımsız bir betik dosyası olarak çalıştırılabilen bir programdır.
İle Linux masaüstü kullanımı giderek artıyor ve dünya çapındaki sunucu ortamlarına hakim işletim sistemi nedeniyle, Bash komut dosyası oluşturma becerileri BT profesyonelleri için değerli hale geldi. Dil, Docker, Kubernetes ve CI/CD işlem hatları gibi DevOps araçlarıyla iyi bir şekilde bütünleşir.
Bash komut dosyası oluşturma, basit komutlardan karmaşık otomasyon ve sistem yönetimine kadar görevleri gerçekleştirmenize olanak tanır. Tekrarlanan görevleri otomatikleştirebilir, bakım komut dosyaları geliştirebilir, dağıtım işlem hatları oluşturabilir, yazılım sistemlerini yönetebilir ve verileri yönetebilirsiniz.
Bash İşlevi Nedir?

Bash işlevi, kullanım durumuna bağlı olarak bir Bash betiğinde tanımlanan veya komut isteminde etkileşimli olarak ayarlanan bir dizi komut olarak tanımlanabilir. Bir kez tanımlandıktan sonra, bir Bash işlevi, normal bir kabuk komutu gibi, komut dosyası içinde veya diğer komut dosyalarında birden çok kez çağrılabilir.
Bash işlevleri, karmaşık işlemleri gerçekleştirebilen, kodunuzu düzenleyebilen ve komut dosyalarınızı basitleştirebilen yeniden kullanılabilir kod blokları oluşturmanıza olanak tanır. Argümanları bir Bash işlevine iletebilir ve ardından bunları, işlemleri gerçekleştirmek için işlev içinde kullanabilirsiniz. Bash işlevleri, betiğinizin başka bir yerinde kullanabileceğiniz değerleri döndürür.
Aşağıdakiler de dahil olmak üzere çeşitli özel uygulama stillerini kapsayacaktır: basit_işlev temel mantık için, basit_girişler argüman yönetimi ve gelişmiş yapılar için fibonnaci_recursion.
Bash fonksiyonlarının temelleri otomasyonla çalışan herhangi bir 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.
Neden Bash İşlevlerini Kullanmalı?

Artık Bash fonksiyonlarının tanımını ele aldığımıza göre, ana avantajlarını gözden geçirelim. Bu bölüm, işlevlerin en yararlı olduğu yerleri anlamanıza yardımcı olur.
Yeniden kullanılabilirlik
Bir Bash işlevi yaratırsınız ve güçlü bir araca sahip olursunuz. Bir kod bloğunu bir kez yazabilir ve onu betiğinizin içinde, hatta diğer betiklerin içinde birden çok kez yeniden kullanabilirsiniz.
Bu, kodunuzu daha verimli hale getirir ve tekrarlamayı ortadan kaldırarak zaman tasarrufu sağlar. İşlevi yalnızca tek bir yerde değiştirmeniz gerektiğinden kodunuzun bakımını yapmak daha kolay hale gelir.
Okunabilirlik
Karmaşık komut dosyalarının şifresini çözmek zor olabilir. Bash işlevleri, betiğinizi daha küçük, daha yönetilebilir parçalara bölerek bu sorunu çözer.
Her işlev, rolünü açıklayan açıklayıcı bir adla belirli bir amaca hizmet eder. Bu, sizin ve başkalarının kodu daha kolay anlamanıza ve korumanıza yardımcı olur.
Modülerlik
İşlevler kodunuzu düzenler. Mantığı daha küçük modüllere bölebilirsiniz, bu da komut dosyası yapınızı temiz ve yönetimi kolay tutar.
Ve eğer yeni bir özellik eklemeniz gerekiyorsa, bunu betiğinizin diğer bölümleriyle uğraşmadan yapabilirsiniz. İşlevselliği kaldırma veya değiştirme zamanı geldiğinde komut dosyanızın geri kalanı olduğu gibi kalır.
Bash İşlev Parametreleri
İşlevlerinize bağımsız değişkenleri veya parametreleri aktarabilirsiniz. Bu bağımsız değişkenler, işlevlerinizin aldıkları girdilere göre farklı eylemleri uyarlamasına ve gerçekleştirmesine olanak tanır.
Bu, işlevlerinizi daha çok yönlü ve uyarlanabilir hale getirirken birçok olasılığın önünü açar. Benzer kodu birden çok kez yazmak yerine, farklı girdileri işleyen tek bir işlev yazarsınız.
Bash Fonksiyonları Nasıl ve Nerede Kullanılır?

Şimdi tanımımızı biraz teknik olarak ele alalım ve Bash fonksiyonlarının nasıl oluşturulacağına dair kısa bir örnekle başlayalım. Aşağıdaki sözdizimi Unix tabanlı ortamlarda kullanılabilir. Windows üzerinde çalışıyorsanız, şunları yapabilirsiniz: Windows 10'a Linux Bash'i yükleyin Bu örnekleri takip etmek için.
Bash İşlevi Oluşturma
Aşağıdaki komut yapısını kullanarak başlayın:
işlev_adı () {
# komut buraya gelecek
}
Fonksiyonu oluşturduktan sonra istediğiniz zaman kodunuzda kullanabilirsiniz. İşte çalışan bir örnek:
selamlaşmak () {
echo "Merhaba, 1$!"
}
Bu işlevi şununla çağırın: Dünyayı selamlıyorum “Merhaba Dünya!” çıktısını almak için $1 işleve iletilen ilk argümanı temsil eder.
Kendi komut dosyalarınızda kullanabileceğiniz birkaç pratik örnek daha:
# Herhangi bir dosyanın yedeğini oluşturun
yedekleme_dosyası () {
cp “$1” “$1.bak”
echo “Yedekleme oluşturuldu: $1.bak”
}
# Dizin olup olmadığını kontrol edin, yoksa oluşturun
temin_dir () {
eğer [ ! -d “1$” ]; Daha sonra
mkdir -p “1$”
echo “Oluşturulan dizin: $1”
fi
}
# Mesajları zaman damgalarıyla günlüğe kaydet
log_message () {
echo "[$(tarih '+%Y-%m-%d %H:%M:%S')] $1"
}
Bu özel Bash işlevlerini bir kez tanımlarsınız ve komut dosyanız boyunca gerektiğinde bunları çağırırsınız.
İşlev Söz Dizimi Esasları
İşlevler ana komut dosyanızdaki mini komut dosyaları gibi davranır ancak kabuğun belleğini paylaşırlar. Bunları yazarken bu üç spesifik davranışı aklınızda bulundurun.
Değişken Kapsam (Yerel ve Küresel)
Fonksiyonların içindeki değişkenler varsayılan olarak globaldir. Eğer tanımlarsan my_var=”test” bir fonksiyonun içinde mevcut olan her şeyi geçersiz kılar my_var senaryonuzda. Her zaman kullan yerel değişkenleri fonksiyonla sınırlandırmak yan etkileri önler:
yerel my_var=”değer”
Konumsal Parametreler
İşlevler argümanları aynı yöntemi kullanarak okur $1, $2, Ve $@ değişkenleri komut dosyaları olarak kullanın. Bunlar fonksiyon için yereldir ve fonksiyondan çıkıldığında sıfırlanır. Komut dosyasının orijinal argümanlarına, siz açıkça iletmediğiniz sürece fonksiyonun içinden erişilemez.
Dönüş Değerleri
Bash işlevleri, Python veya JavaScript işlevleri gibi verileri döndürmez. geri dönmek komut yalnızca başarıyı veya başarısızlığı belirtmek için bir çıkış durumunu (0-255) ayarlar. Gerçek verileri (bir dize veya hesaplama gibi) döndürmek için, yankı sonucu alın ve işlevi çağırırken yakalayın:
sonuç=$(my_function)
En Faydalı 10 Bash Fonksiyonu Örneği
Artık Bash işlevlerini ve bunların nasıl oluşturulacağını anladığınıza göre, komut dosyalarınıza ekleyebileceğiniz on pratik örneği burada bulabilirsiniz. Her işlev ortak bir sorunu çözer ve uygun yapıyı, bağımsız değişkenleri ve dönüş değerlerini gösterir.
1. Dosya Yedekleme İşlevi
Herhangi bir dosyanın zaman damgalı yedeğini oluşturur:
yedekleme_dosyası () {
yerel dosya=”$1″
local backup=”${file}.$(date +%Y%m%d_%H%M%S).bak”
if [ -f “$dosya” ]; Daha sonra
cp “$dosya” “$yedek”
echo “Yedekleme oluşturuldu: $backup”
0'a dön
başka
echo “Hata: Dosya bulunamadı”
dönüş 1
fi
}
Kullanımı: backup_file /etc/nginx/nginx.conf
2. Dizin Denetleyicisi
Bir dizinin var olup olmadığını kontrol eder ve gerekirse onu oluşturur:
temin_dir () {
yerel dizin=”$1″
eğer [ ! -d “$dir” ]; Daha sonra
mkdir -p “$dir”
echo “Oluşturuldu: $dir”
fi
}
Kullanımı: sure_dir /var/log/uygulamam
3. Zaman Damgalı Kaydedici
Hata ayıklama amacıyla günlük iletilerine zaman damgaları ekler:
log_message () {
yerel düzey=”$1″
yerel mesaj=”$2″
echo “[$(tarih ‘+%Y-%m-%d %H:%M:%S’)] [$seviye] $mesaj”
}
Kullanımı: log_message “BİLGİ” “Komut dosyası başlatıldı”
4. Disk Alanı Monitörü
Disk kullanımını kontrol eder ve bir eşiği aştığında uyarır:
check_disk_space () {
yerel eşik=”${1:-80}”
yerel kullanım=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
if [ “$kullanım” -gt “$eşik” ]; Daha sonra
echo “Uyarı: ${usage}% oranında disk kullanımı”
dönüş 1
fi
0'a dön
}
Kullanımı: check_disk_space 90
5. Giriş Doğrulayıcı
Kullanıcı girişinin boş olmadığını doğrular:
validate_input () {
yerel giriş=”$1″
yerel ad=”$2″
if [ -z “$giriş” ]; Daha sonra
echo "Hata: $isim boş olamaz"
dönüş 1
fi
0'a dön
}
Kullanımı: validate_input “$kullanıcıadı” “Kullanıcı adı”
6. Hizmet Durumu Denetleyicisi
Bir hizmetin çalışıp çalışmadığını kontrol eder ve durumu bildirir:
check_service () {
yerel hizmet=”$1″
eğer systemctl aktif ise –quiet “$service”; Daha sonra
echo “$hizmet çalışıyor”
0'a dön
başka
echo “$hizmet çalışmıyor”
dönüş 1
fi
}
Kullanımı: check_service nginx
7. Dosya Uzantısı Çıkarıcı
Uzantıyı bir dosya adından çıkarır:
get_extension () {
yerel dosya adı=”$1″
echo “${dosyaadı##*.}”
}
Kullanımı: ext=$(get_extension “belge.pdf”)
8. İp Düzeltici
Dizelerin başındaki ve sonundaki boşlukları kaldırır:
trim_string () {
yerel str=”$1″
str=”${str#”${str%%[![:space:]]*}”}”
str=”${str%”${str##*[![:space:]]}”}”
yankı “$str”
}
Kullanımı: clean=$(trim_string ” merhaba dünya “)
9. Güvenli Dosya Arşivleyici
Bir dosyayı kalıcı olarak silmek yerine özel bir $HOME/.trash dizinine taşır. Önceki yedeklemelerin üzerine yazılmasını önlemek için dosya adına bir zaman damgası ekler.
Safe_remove() {
yerel dosya=”$1″
yerel çöp=”$HOME/.trash”
# Mevcut dosyaların üzerine yazılmasını önlemek için zaman damgası ekleyin
local new_name=”$(temel adı “$dosya”)_$(tarih +%s)”
mkdir -p “$çöp kutusu”
if [ -e “$dosya” ]; Daha sonra
mv “$dosya” “$çöp/$yeni_ad”
echo “Arşiv'e taşındı: $file -> $trash/$new_name”
başka
echo "Hata: $dosya bulunamadı"
dönüş 1
fi
}
Kullanımı: Safe_remove old_script.sh
10. Durum Raportörü
Hata işleme için Bash işlevi dönüş mekanizmasını gösterir. Bash işlevinin dönüş değeri başarıyı (0) veya başarısızlığı (sıfırdan farklı) gösterir:
süreç_verileri () {
yerel dosya=”$1″
eğer [ ! -f “$dosya” ]; Daha sonra
dönüş 1
fi
# Dosyayı işle
kedi “$dosya” | tuvalet -l
0'a dön
}
# Dönüş değerini kontrol et
proses_data “veri.txt”
eğer [ $? -eq 0 ]; Daha sonra
echo "İşlem tamamlandı"
başka
echo "İşleme başarısız oldu"
fi
The $? değişken son komut veya işlev çağrısından çıkış durumunu yakalar.
| İşlev | Amaç | Temel Özellik |
| yedekleme_dosyası | Dosya yedekleri oluşturun | Zaman damgalı adlandırma |
| temin_dir | Dizin yönetimi | Eksikse oluşturur |
| log_message | Günlüğe kaydetme | Zaman damgası öneki |
| check_disk_space | Sistem izleme | Eşik uyarıları |
| validate_input | Giriş doğrulama | Boş dize kontrolü |
| check_service | Servis izleme | Sistemd entegrasyonu |
| get_extension | Dize ayrıştırma | Parametre genişletme |
| trim_string | Dize temizleme | Boşluk kaldırma |
| Safe_remove | Güvenli silme | Çöp dizini |
| süreç_verileri | Hata işleme | Dönüş değerleri |
Bash İşlevlerini VPS'de Çalıştırma
Bash işlevleri, özel bir sunucu ortamında çalıştırıldığında güçlü hale gelir. Bizim Linux VPS'si kabuk ortamınızı özelleştirmeniz, sistem çapında işlev kitaplıkları oluşturmanız ve sunucu yönetimi görevlerini kısıtlama olmaksızın otomatikleştirmeniz için size tam kök erişimi sağlar.
VPS ile yeniden kullanılabilir işlevleri depolayabilirsiniz. /etc/profile.d/ tüm kullanıcılar için cron işleri aracılığıyla işlev tabanlı komut dosyaları planlayın ve dağıtım ve bakım için otomasyon işlem hatları oluşturun. 12 küresel konumda, 40 Gbps'ye kadar ağ hızlarına ve DDR5 belleğe sahip sunucular sunuyoruz; bu, daha hızlı komut dosyası yürütme ve daha sorunsuz veri işleme anlamına gelir.
Bu düzeydeki kontrol, VPS'yi kabuk komut dosyası oluşturma ve sistem otomasyonu konusunda ciddi olan herkes için ideal kılar.
Çözüm
Bash işlevleri, modüler ve yeniden kullanılabilir komut dosyaları oluşturmanın anahtarıdır. İlgili komutları bir arada gruplamanıza ve kodunuzun okunmasını ve bakımını kolaylaştırmak için karmaşık mantığı kapsüllemenize olanak tanır. Bulut altyapısını yönetiyorsanız, dağıtım hatlarını otomatikleştiriyorsanız veya rutin sistem yönetimi görevlerini yürütüyorsanız işlevler, komut dosyalarınızın düzenli ve verimli kalmasına yardımcı olur.
Bu makalede, kendi otomasyon projelerinize başlamanıza yardımcı olacak, bunların nasıl tanımlanacağı ve çağrılacağı da dahil olmak üzere Bash fonksiyonlarının temellerini, on pratik fonksiyon örneğini ve yaygın kullanım örneklerini ele aldık.
gibi kontrol yapılarıyla birleştirilmiştir. Bash if ifadesi, işlevler size güçlü otomasyon için yapı taşlarını sağlar. Betiklerinizde Bash işlevlerini kullanarak anlaşılması ve bakımı daha kolay, daha temiz, daha modüler kod yazabilirsiniz.