-
Sadrazamv4
instagram:sadrazam.spy Tg:Sadrazamv4
🚀 BAŞTAN SONA BASH SCRIPTING BÖLÜM-5: Fonksiyonlar ve İnteraktif `select` Menüleri 🛠️
Selamlar! Serimizin 5. bölümüne hoş geldiniz.
Önceki bölümde `for`, `while` ve `until` döngülerini ve dosya okuma tekniklerini öğrenmiştik. Bu bölümde ise kodlarımızı modüler hale getiren **Fonksiyonlar (Functions)**, **Kapsam Yönetimi (Local vs Global Değişkenler)** ve terminalde pratik seçim menüleri oluşturmamızı sağlayan **`select` Yapısını** inceleyeceğiz.
---
📌 1. Bash'te Fonksiyon Tanımlama ⚙️
Fonksiyonlar, tekrar eden kod bloklarını tek bir isim altında toplayarak istediğimiz zaman yeniden çağırmamızı sağlar.
Bash'te iki farklı tanımlama yöntemi vardır:
#!/bin/bash
# 1. Yöntem (Standart):
fonksiyon_adi() {
echo "1. Yöntem ile fonksiyon çalıştı!"
}
# 2. Yöntem ('function' anahtar kelimesi ile):
function ikinci_fonksiyon {
echo "2. Yöntem ile fonksiyon çalıştı!"
}
# Fonksiyonları Çağırma (Parantez KULLANILMAZ!):
fonksiyon_adi
ikinci_fonksiyon
---
📥 2. Fonksiyonlara Parametre Geçirme ve `return` 🔄
Bash fonksiyonlarında parametreler parantez içine yazılmaz. Tıpkı betiğin kendisine argüman geçer gibi çağrılır ve fonksiyon içinde `$1`, `$2`, `$3` şeklinde okunur.
#!/bin/bash
# Parametre Alan Fonksiyon
karsila() {
local ISIM=$1
local UNVAN=$2
echo "Hoş geldiniz Sayın $UNVAN $ISIM! 👋"
}
# Çağırma:
karsila "Ahmet" "Mühendis"
karsila "Ayşe" "Yönetici"
### Fonksiyonlarda `return` Mantığı:
Bash'te `return` ifadesi sayısal bir **çıkış kodu (exit status: 0-255)** döndürür. `0` başarılı, `0` dışındaki sayılar hata anlamına gelir.
Eğer bir fonksiyondan metin/değer döndürmek istiyorsak `echo` ve komut ikamesi (`$()`) kullanırız:
topla() {
local SONUC=$(($1 + $2))
echo $SONUC
}
TOPLAM=$(topla 15 25)
echo "Hesaplanan Toplam: $TOPLAM"
---
🔒 3. Değişken Kapsamı: `local` vs Global Değişkenler 🛡️
Varsayılan olarak Bash içindeki tüm değişkenler **Global**'dir. Bir fonksiyon içinde tanımlanan değişken, fonksiyon bittikten sonra da erişilebilir kalır.
Kod karmaşasını ve değişken çakışmalarını önlemek için fonksiyon içindeki değişkenlerin başına kesinlikle **`local`** yazılmalıdır!
#!/bin/bash
TEST_VAR="Global Değer"
test_fonksiyonu() {
local TEST_VAR="Local (Yerel) Değer"
echo "Fonksiyon İçinde: $TEST_VAR"
}
test_fonksiyonu
echo "Fonksiyon Dışında: $TEST_VAR"
# Çıktı:
# Fonksiyon İçinde: Local (Yerel) Değer
# Fonksiyon Dışında: Global Değer
---
🎛️ 4. İnteraktif Menü Oluşturma: `select` Yapısı 📋
`select`, kullanıcıya numaralandırılmış bir seçenek listesi sunan ve kullanıcının seçim yapmasını bekleyen özel bir döngü yapısıdır.
Özellikle sistem yönetimi betiklerinde ve konsol araçlarında harika arayüzler oluşturur.
#!/bin/bash
# Menü başlığını/istemini değiştirme ($PS3 değişkeni):
PS3="Lütfen yapmak istediğiniz işlemi seçin (1-4): "
options=("Sistem Durumu" "Disk Kullanımı" "Bellek (RAM) Bilgisi" "Çıkış")
select SECENEK in "${options[@]}"
do
case $SECENEK in
"Sistem Durumu")
echo "--- Sistem Uptime ---"
uptime
;;
"Disk Kullanımı")
echo "--- Disk Alanı ---"
df -h /
;;
"Bellek (RAM) Bilgisi")
echo "--- RAM Kullanımı ---"
free -m
;;
"Çıkış")
echo "Güle güle! 👋"
break
;;
*)
echo "Geçersiz seçim! Lütfen 1 ile 4 arasında bir sayı girin."
;;
esac
done
---
📝 Bölüm Özeti ve Gelecek Bölüm 🔮
Bu bölümde modüler fonksiyon yazımını, parametre yönetimini, `local` değişken güvenliğini ve `select` yapısıyla interaktif menüler hazırlamayı öğrendik.
👉 Bölüm 6'da Bizi Ne Bekliyor?
• Diziler (Arrays): Indeksli ve İlişkisel Diziler (Associative Arrays)
• Dizi Elemanlarını Ekleme, Silme ve Di
limleme
• Dizi Uzunluğu Hesaplama (`${#dizi[@]}`)
Sorularınızı konu altından iletebilirsiniz. Bir sonraki bölümde görüşmek üzere! 🐚✨
Selamlar! Serimizin 5. bölümüne hoş geldiniz.
Önceki bölümde `for`, `while` ve `until` döngülerini ve dosya okuma tekniklerini öğrenmiştik. Bu bölümde ise kodlarımızı modüler hale getiren **Fonksiyonlar (Functions)**, **Kapsam Yönetimi (Local vs Global Değişkenler)** ve terminalde pratik seçim menüleri oluşturmamızı sağlayan **`select` Yapısını** inceleyeceğiz.
---
📌 1. Bash'te Fonksiyon Tanımlama ⚙️
Fonksiyonlar, tekrar eden kod bloklarını tek bir isim altında toplayarak istediğimiz zaman yeniden çağırmamızı sağlar.
Bash'te iki farklı tanımlama yöntemi vardır:
#!/bin/bash
# 1. Yöntem (Standart):
fonksiyon_adi() {
echo "1. Yöntem ile fonksiyon çalıştı!"
}
# 2. Yöntem ('function' anahtar kelimesi ile):
function ikinci_fonksiyon {
echo "2. Yöntem ile fonksiyon çalıştı!"
}
# Fonksiyonları Çağırma (Parantez KULLANILMAZ!):
fonksiyon_adi
ikinci_fonksiyon
---
📥 2. Fonksiyonlara Parametre Geçirme ve `return` 🔄
Bash fonksiyonlarında parametreler parantez içine yazılmaz. Tıpkı betiğin kendisine argüman geçer gibi çağrılır ve fonksiyon içinde `$1`, `$2`, `$3` şeklinde okunur.
#!/bin/bash
# Parametre Alan Fonksiyon
karsila() {
local ISIM=$1
local UNVAN=$2
echo "Hoş geldiniz Sayın $UNVAN $ISIM! 👋"
}
# Çağırma:
karsila "Ahmet" "Mühendis"
karsila "Ayşe" "Yönetici"
### Fonksiyonlarda `return` Mantığı:
Bash'te `return` ifadesi sayısal bir **çıkış kodu (exit status: 0-255)** döndürür. `0` başarılı, `0` dışındaki sayılar hata anlamına gelir.
Eğer bir fonksiyondan metin/değer döndürmek istiyorsak `echo` ve komut ikamesi (`$()`) kullanırız:
topla() {
local SONUC=$(($1 + $2))
echo $SONUC
}
TOPLAM=$(topla 15 25)
echo "Hesaplanan Toplam: $TOPLAM"
---
🔒 3. Değişken Kapsamı: `local` vs Global Değişkenler 🛡️
Varsayılan olarak Bash içindeki tüm değişkenler **Global**'dir. Bir fonksiyon içinde tanımlanan değişken, fonksiyon bittikten sonra da erişilebilir kalır.
Kod karmaşasını ve değişken çakışmalarını önlemek için fonksiyon içindeki değişkenlerin başına kesinlikle **`local`** yazılmalıdır!
#!/bin/bash
TEST_VAR="Global Değer"
test_fonksiyonu() {
local TEST_VAR="Local (Yerel) Değer"
echo "Fonksiyon İçinde: $TEST_VAR"
}
test_fonksiyonu
echo "Fonksiyon Dışında: $TEST_VAR"
# Çıktı:
# Fonksiyon İçinde: Local (Yerel) Değer
# Fonksiyon Dışında: Global Değer
---
🎛️ 4. İnteraktif Menü Oluşturma: `select` Yapısı 📋
`select`, kullanıcıya numaralandırılmış bir seçenek listesi sunan ve kullanıcının seçim yapmasını bekleyen özel bir döngü yapısıdır.
Özellikle sistem yönetimi betiklerinde ve konsol araçlarında harika arayüzler oluşturur.
#!/bin/bash
# Menü başlığını/istemini değiştirme ($PS3 değişkeni):
PS3="Lütfen yapmak istediğiniz işlemi seçin (1-4): "
options=("Sistem Durumu" "Disk Kullanımı" "Bellek (RAM) Bilgisi" "Çıkış")
select SECENEK in "${options[@]}"
do
case $SECENEK in
"Sistem Durumu")
echo "--- Sistem Uptime ---"
uptime
;;
"Disk Kullanımı")
echo "--- Disk Alanı ---"
df -h /
;;
"Bellek (RAM) Bilgisi")
echo "--- RAM Kullanımı ---"
free -m
;;
"Çıkış")
echo "Güle güle! 👋"
break
;;
*)
echo "Geçersiz seçim! Lütfen 1 ile 4 arasında bir sayı girin."
;;
esac
done
---
📝 Bölüm Özeti ve Gelecek Bölüm 🔮
Bu bölümde modüler fonksiyon yazımını, parametre yönetimini, `local` değişken güvenliğini ve `select` yapısıyla interaktif menüler hazırlamayı öğrendik.
👉 Bölüm 6'da Bizi Ne Bekliyor?
• Diziler (Arrays): Indeksli ve İlişkisel Diziler (Associative Arrays)
• Dizi Elemanlarını Ekleme, Silme ve Di
limleme
• Dizi Uzunluğu Hesaplama (`${#dizi[@]}`)
Sorularınızı konu altından iletebilirsiniz. Bir sonraki bölümde görüşmek üzere! 🐚✨
🔒 Bu içeriği görmek için giriş yapın