🚀 BAŞTAN SONA BASH SCRIPTING BÖLÜM-3: Aritmetik İşlemler ve Karar Yapıları (`if / else`) 🐚

Konu Özeti

Bash betiklerinde aritmetik işlemler için $(( ... )) yapısı kullanılır; değişkenler varsayılan olarak metin türünde olduğundan doğrudan atama yapılmaz. Sayısal karşılaştırmalarda -eq, -ne, -gt, -lt gibi özel operatörler, metin karşılaştırmalarında ise =, !=, -z, -n operatörleri kullanılır. if/else karar yapılarıyla koşullu dallanma sağlanır; elif ile çoklu koşullar eklenebilir ve test komutları köşeli parantezler içinde boşluk bırakılarak yazılmalıdır.

🚀 BAŞTAN SONA BASH SCRIPTING BÖLÜM-3: Aritmetik İşlemler ve Karar Yapıları (`if / else`) 🐚

Selamlar! Serimizin 3. bölümüne hoş geldiniz.

Önceki bölümde değişkenleri, `read` ile kullanıcıdan girdi almayı ve özel argüman değişkenlerini incelemiştik. Bu bölümde ise betiklerimize mantık ve karar mekanizması katacak olan **Aritmetik İşlemleri** ve **Karar Yapılarını (`if / else`)** öğreneceğiz.

---

🔢 1. Bash'te Aritmetik İşlemler 🧮

Bash varsayılan olarak tüm değişkenleri metin (string) olarak değerlendirir. Bu yüzden doğrudan `X=5+5` yazarsanız ekrana "5+5" basar!

Matematiksel işlem yapmak için en modern ve performanslı yöntem `$(( ... ))` yapısıdır.

#!/bin/bash

SAYI1=10
SAYI2=3

# $(( ... )) kullanımı:
TOPLAM=$((SAYI1 + SAYI2))
FARK=$((SAYI1 - SAYI2))
CARPIM=$((SAYI1 * SAYI2))
BOLUM=$((SAYI1 / SAYI2)) # Tam sayı bölmesi yapar (Ondalık kısmı atar)
KALAN=$((SAYI1 % SAYI2)) # Mod alma

echo "Toplam: $TOPLAM"
echo "Bölüm: $BOLUM"
echo "Kalan: $KALAN"

# Sayaç Artırma / Eksiltme:
SAYAC=0
((SAYAC++)) # SAYAC 1 oldu
((SAYAC+=5)) # SAYAC 6 oldu

---

🚦 2. Test Yapısı ve Karşılaştırma Operatörleri ⚖️

Bash'te koşul kontrolleri `[ ]` veya daha gelişmiş olan `[[ ]]` parantezleri içinde yapılır.

⚠️ **Önemli Kural:** Köşeli parantezlerin İÇ KENARLARINDA boşluk bırakmak ZORUNDASINIZDIR! (`[ $SAYI -eq 10 ]`)

### A. Sayısal Karşılaştırma Operatörleri:
Normal `<` veya `>` işaretleri yerine özel kelimeler kullanılır:

- `-eq` (Equal): Eşit ise (`==`)
- `-ne` (Not Equal): Eşit değil ise (`!=`)
- `-gt` (Greater Than): Büyük ise (`>`)
- `-ge` (Greater or Equal): Büyük veya eşit ise (`>=`)
- `-lt` (Less Than): Küçük ise (`<`)
- `-le` (Less or Equal): Küçük veya eşit ise (`<=`)

### B. Metinsel (String) Karşılaştırma Operatörleri:
- `=` veya `==`: Metinler eşit ise
- `!=`: Metinler eşit değil ise
- `-z`: Metin boş (length zero) ise
- `-n`: Metin boş değil (not zero) ise

---

🔀 3. Karar Yapıları: `if`, `elif`, `else` 🚦

Bash'te `if` bloğu `if [ koşul ]; then` şeklinde başlar ve tersten yazılan `fi` ile bitirilir.

#!/bin/bash

read -p "Lütfen yaşınızı girin: " YAS

if [ $YAS -ge 18 ]; then
echo "Ehliyet alabilirsiniz! ✅"
elif [ $YAS -eq 17 ]; then
echo "Dayanın, son 1 yılınız kaldı! ⏳"
else
echo "Üzgünüm, yaşınız ehliyet almak için yetersiz. ❌"
fi

---

🔗 4. Mantıksal Operatörler (AND / OR) 🤝

Multiple koşulları bağlamak için `&&` (AND) ve `||` (OR) kullanılır. Modern `[[ ]]` yapısıyla kullanımı çok pratiktir:

#!/bin/bash

KULLANICI="admin"
PAROLA="12345"

read -p "Kullanıcı Adı: " GIRILEN_KULLANICI
read -sp "Parola: " GIRILEN_PAROLA
echo ""

# [[ ... ]] kullanımı mantıksal operatörleri doğrudan destekler:
if [[ $GIRILEN_KULLANICI == $KULLANICI && $GIRILEN_PAROLA == $PAROLA ]]; then
echo "Giriş Başarılı! Sistem açılıyor... 🚀"
else
echo "Hatalı Kullanıcı Adı veya Parola! ⛔"
fi

---

📁 5. Dosya ve Dizin Kontrol Operatörleri 📂

Sistem yönetiminde en çok kullanılan koşullardır. Bir dosyanın var olup olmadığını veya yazılabilir olup olmadığını kontrol eder:

- `-e` (Exists): Dosya veya dizin var mı?
- `-f` (File): Belirtilen yol normal bir dosya mı?
- `-d` (Directory): Belirtilen yol bir dizin/klasör mü?
- `-r` (Readable): Okuma izni var mı?
- `-w` (Writable): Yazma izni var mı?
- `-x` (Executable): Çalıştırma izni var mı?

#!/bin/bash

DOSYA_YOLU="/etc/passwd"

if [ -f $DOSYA_YOLU ]; then
echo "$DOSYA_YOLU bir dosyadır ve sistemde mevcuttur. ✅"

if [ -w $DOSYA_YOLU ]; then
echo "Bu dosyaya yazma izniniz var."
else
echo "Bu dosyayı değiştirmek için root yetkisi gerekir (Salt Okunur). 🔒"
fi
else
echo "Böyle bir dosya bulunamadı! ❌"
fi

---

📝 Bölüm Özeti ve Gelecek Bölüm 🔮

Bu bölümde Bash'te matematiksel işlemleri, karşılaştırma operatörlerini, `if/elif/else` yapısını ve dosya kontrol parametrelerini öğrendik.

👉 Bölüm 4'te Bizi Ne Bekliyor?
• Döngüler (Loops): `for`, `while` ve `until`
• Sonsuz Döngüler ve `break` / `continue`
• Dizile
r üzerindeki döngüler ve dosyaları satır satır okuma

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

 
Yanıt yazmak için giriş yapmalısınız
Forum özelliklerini kullanmak ve Level 2 üyelik satın almak için hesabınıza giriş yapın.
136,593Threads
3,306,848Messages
328,439Members
cnhadfhafLatest member
Top Bottom