- “If” İfadesinin Kullanımı
- “If-Else” İfadesinin Kullanımı
- “If-Elif-Else” İfadesinin Kullanımı
- Boş Bir Değişkeni Kontrol Etmek İçin “If” İfadesinin Kullanımı
- Mantıksal Operatörle “If” İfadesinin Kullanımı
- İç içe geçmiş “If” İfadelerinin Kullanımı
- Dosya Varlığını Kontrol Etmek İçin “If” İfadesinin Kullanımı
- Dizin Varlığını Kontrol Etmek İçin “If” İfadesinin Kullanımı
- Regex ile “If” İfadesinin Kullanımı
- “Vaka” İfadesinin Kullanımı
“If” İfadesinin Kullanımı
Bu örnek Bash'te 'if' ifadesinin basit kullanımını göstermektedir. Bash'teki sayısal değerleri karşılaştırmak için altı tür karşılaştırma operatörü kullanılabilir. Bunlar “-eq” (eşit), “-ne” (eşit değil), “-le” (eşitten küçük), “-ge” (eşitten büyük), “-lt” (küçük) ve “ -gt” (büyüktür). “-lt” ve “-eq” kullanımları, sayının 99'dan küçük olup olmadığı veya “-lt” operatörü kullanılarak kontrol edilmemiş olması durumunda aşağıdaki kodda gösterilmektedir. Sayının çift veya tek olup olmadığı “-eq” operatörü tarafından kontrol edilir.
#!/bin/bash
#Sayısal bir değer atayın
( ( sayı = elli ) )
#'if' ifadesini kullanarak sayısal değeri kontrol edin
eğer [ $sayı -lt 99 ]
Daha sonra
Eko 'Numara geçerli.'
olmak
#Sayının çift olup olmadığını kontrol et
eğer [ $ ( ( $sayı % 2 ) ) -eşit 0 ]
Daha sonra
Eko 'Sayı çifttir.'
olmak
Çıktı :
Önceki betiği çalıştırdıktan sonra aşağıdaki çıktı görünür:
“If-Else” İfadesinin Kullanımı
Aşağıdaki scriptte “if-else” ifadesinin kullanımı gösterilmiştir. Kullanıcıdan bir string değeri alınır ve “if-else” ifadesi kullanılarak değerin “MAVİ” olup olmadığı kontrol edilir.
#!/bin/bash
#Kullanıcıdan bir dize değeri al
Okumak -P 'Favori renginizi girin:' renk
#'if-else' ifadesini kullanarak dize değerini kontrol edin
eğer [ ${renk^^} == 'MAVİ' ]
Daha sonra
Eko 'Güzel, Mavi rengi mevcuttur.'
başka
Eko ' $renk mevcut değil.'
olmak
Çıktı :
Giriş olarak “kırmızı” alınırsa önceki komut dosyası çalıştırıldıktan sonra aşağıdaki çıktı görünür:
Giriş olarak “mavi” alınırsa önceki komut dosyası çalıştırıldıktan sonra aşağıdaki çıktı görünür:
“If-Elif-Else” İfadesinin Kullanımı
Aşağıdaki scriptte if-elif-else ifadesinin kullanımı gösterilmiştir. Kullanıcıdan bir sayı alınır ve herhangi bir eşleşme bulunana kadar farklı değerlerle kontrol edilir. Herhangi bir eşleşme bulunursa ilgili mesaj yazdırılır. Eşleşme bulunamazsa varsayılan mesaj yazdırılır.
#!/bin/bash#Kullanıcıdan id değerini al
Okumak -P 'Seri numaranızı girin:' seri
#'if-elif-else' ifadesini kullanarak giriş değerini kontrol edin
eğer [ $seri == '4523' ]
Daha sonra
Eko 'A grubunda seçildiniz.'
elif [ $seri == '8723' ]
Daha sonra
Eko 'B grubunda seçildiniz.'
elif [ $seri == '3412' ]
Daha sonra
Eko 'C grubunda seçildiniz.'
başka
Eko 'Seçilmedin' .
olmak
Çıktı:
Betiği 8723 değeriyle çalıştırdıktan sonra aşağıdaki çıktı görünür:
Betiği 9078 değeriyle çalıştırdıktan sonra aşağıdaki çıktı görünür:
Boş Bir Değişkeni Kontrol Etmek İçin “If” İfadesinin Kullanımı
Bir değişkenin boş olup olmadığını “if” ifadesi kullanmadan kontrol etme yöntemi aşağıdaki komut dosyasında gösterilmektedir. Bu görevi gerçekleştirmek için “if” ifadesinde “-z” seçeneği kullanılır.
#!/bin/bash#Kullanıcıdan id değerini al
Okumak -P 'Seri numaranızı girin:' seri
#Değişkenin boş olup olmadığını kontrol edin
eğer [ ! -İle $seri ]
Daha sonra
#'if-elif-else' ifadesini kullanarak giriş değerini kontrol edin
eğer [ $seri == '690' ]
Daha sonra
Eko 'Takım-1'e seçildiniz.'
elif [ $seri == '450' ]
Daha sonra
Eko 'Takım-2'ye seçildiniz.'
başka
Eko 'Seçilmedin' .
olmak
başka
Eko 'Seri numarası verilmedi.'
olmak
Çıktı :
Betiği 690 değeriyle çalıştırdıktan sonra aşağıdaki çıktı görünür:
Herhangi bir giriş değeri alınmazsa, komut dosyası çalıştırıldıktan sonra aşağıdaki çıktı görüntülenir:
“If” İfadesinin Mantıksal Operatörlerle Kullanımı
Bash koşullu ifadesinde üç tür mantıksal operatör kullanılabilir. Bunlar mantıksal VEYA (||), mantıksal VE (&&) ve mantıksal DEĞİL (!)'dir. Kullanıcıdan bir kod değeri alınır. Giriş değeri boş değilse, değer mantıksal VEYA kullanılarak iki kod değeriyle kontrol edilir. Değer herhangi bir kodla eşleşirse ilgili mesaj yazdırılır. Eşleşen kod bulunamazsa varsayılan mesaj yazdırılır.
#!/bin/bash#Kullanıcıdan ders kodunu al
Okumak -P 'Ders kodunu girin:' kod
#Değişkenin boş olup olmadığını kontrol edin
eğer [ ! -İle $kod ]
Daha sonra
#'if-elif-else' ifadesini kullanarak giriş değerini kontrol edin
eğer [ [ $kod == 'CSE-106' || $kod == 'CSE-108' ] ]
Daha sonra
Eko 'CSE kursu.'
elif [ [ $kod == 'BBA-203' || $kod == 'BBA-202' ] ]
Daha sonra
Eko 'BBA kursu.'
başka
Eko 'Geçersiz ders kodu.'
olmak
başka
Eko 'Ders kodu verilmemektedir.'
olmak
Çıktı :
Betiği “CSE-108” giriş değeriyle çalıştırdıktan sonra aşağıdaki çıktı görünür:
Betiği “BBA-56” giriş değeriyle çalıştırdıktan sonra aşağıdaki çıktı görünür:
İç içe geçmiş “If” İfadelerinin Kullanımı
Bir “if” koşulu başka bir “if” koşulunun içinde kullanıldığında buna iç içe geçmiş “if” ifadesi denir. İç içe geçmiş “if” ifadesini kullanma yöntemi aşağıdaki komut dosyasında gösterilmektedir. Kullanıcıdan iki adet işaret değeri alınır. Giriş değerleri boş değilse, ilk “if” koşulu “$teori” değerinin 60'a eşit veya büyük olup olmadığını kontrol eder. İlk 'if' koşulu 'true' değerini döndürürse, ikinci 'if' koşulu '$lab' değerinin 50'den büyük veya eşit olup olmadığını kontrol eder. İkinci 'if' koşulu da 'true' değerini döndürürse bir başarı mesajı yazdırılır. Aksi takdirde bir arıza mesajı yazdırılır.
#!/bin/bash#Teori notunu al
Okumak -P 'Teori işaretini girin:' teori
#Laboratuvar işaretini al
Okumak -P 'Laboratuvar işaretini girin:' laboratuvar
#Değişkenlerin boş olup olmadığını kontrol edin
eğer [ [ ! -İle $teori && ! -İle $laboratuvar ] ]
Daha sonra
#İç içe 'if' ifadesini kullanarak giriş değerlerini kontrol edin
eğer [ $teori -ge 60 ]
Daha sonra
eğer [ $laboratuvar -ge elli ]
Daha sonra
Eko 'Geçtin.'
başka
Eko 'Başarısız oldun.'
olmak
başka
Eko 'Başarısız oldun.'
olmak
başka
Eko 'Teori veya laboratuvar puanı boş.'
olmak
Çıktı :
Giriş değerlerinden her ikisi veya biri boşsa aşağıdaki çıktı görünür:
78 teori puanı, 45 ise laboratuvar puanı alınırsa aşağıdaki çıktı ortaya çıkar. Burada ikinci 'if' koşulu 'false' değerini döndürür:
67 teori puanı, 56 ise laboratuvar puanı olarak alınırsa aşağıdaki çıktı ortaya çıkar. Burada her iki 'if' koşulu da 'true' değerini döndürür:
Teorik not olarak 50, laboratuvar notu olarak 80 alınırsa aşağıdaki çıktı ortaya çıkar. Burada ilk 'if' koşulu 'false' değerini döndürür:
Dosya Varlığını Kontrol Etmek İçin “If” İfadesinin Kullanımı
Dosyanın varlığı bash betiği tarafından iki şekilde kontrol edilebilir. Bunlardan biri “-f” operatörünü “[]” parantezleriyle kullanmaktır. Bir diğeri ise “test” komutunu ve “-f” operatörünü kullanmaktır. Bir dosya adı alınır ve “-f” operatörü ile “if” koşulunu kullanarak dosyanın varlığını kontrol eder. Daha sonra başka bir dosya adı alınır ve “test” komutu ve “-f” operatörü ile “if” ifadesi kullanılarak dosyanın varlığı kontrol edilir.
#!/bin/bash#Dosya adını al
Okumak -P 'Bir dosya adı girin:' fn1
#`test`i kullanmadan dosyanın var olup olmadığını kontrol et
eğer [ -F $fn1 ]
Daha sonra
Eko ' $fn1 dosya var.'
başka
Eko ' $fn1 dosya bulunmuyor.'
olmak
#Yeni satır ekle
Eko
#Başka bir dosya adı al
Okumak -P 'Başka bir dosya adı girin:' fn2
#`test'i kullanarak dosyanın var olup olmadığını kontrol et
eğer Ölçek -F $fn2 ; Daha sonra
Eko ' $fn2 dosya var.'
#`test'i kullanarak dosyanın boş olup olmadığını kontrol et
eğer Ölçek -İle $fn2 ; Daha sonra
Eko ' $fn2 dosya boş.'
başka
Eko ' $fn2 Dosya boş değil.'
olmak
başka
Eko ' $fn2 dosya bulunmuyor.'
olmak
Çıktı :
Dosya adı olarak “test.txt” ve “testing.txt” alınarak script çalıştırıldığında aşağıdaki çıktı ortaya çıkıyor. Çıktıya göre her iki dosya da geçerli konumda mevcut ve “testing.txt” dosyası boş:
Dosya adı olarak “f1.txt” ve “test.txt” alınarak script çalıştırıldığında aşağıdaki çıktı ortaya çıkıyor. Çıktıya göre “f1.txt” dosyası mevcut konumda bulunmuyor ve “test.txt” dosyası boş değil:
Dizin Varlığını Kontrol Etmek İçin “If” İfadesinin Kullanımı
Dizinin varlığı Bash betiği tarafından dosya gibi iki şekilde kontrol edilebilir. Bunlardan biri “-d” operatörünü “[]” parantezleriyle kullanmaktır. Bir diğeri ise “test” komutunu ve “-d” operatörünü kullanmaktır. Bir dizin adı alınır ve “-d” operatörü ile “if” koşulunu kullanarak dizinin varlığını kontrol eder. Daha sonra başka bir dizin adı alınır ve “test” komutu ve “-d” operatörü ile “if” ifadesi kullanılarak dosyanın varlığı kontrol edilir.
#!/bin/bash#Bir dizin adı al
Okumak -P 'Bir dizin adı girin:' sen1
#`test`i kullanmadan dizinin var olup olmadığını kontrol edin
eğer [ -D $dir1 ]
Daha sonra
Eko ' $dir1 dizin mevcut.'
başka
Eko ' $dir1 dizin mevcut değil.'
olmak
#Yeni satır ekle
Eko
#Başka bir dizin adı al
Okumak -P 'Başka bir dizin adı girin:' yön2
#`test'i kullanarak dosyanın var olup olmadığını kontrol et
eğer Ölçek -D $dir2
Daha sonra
Eko ' $dir2 dizin mevcut.'
başka
Eko ' $dir2 dizin mevcut değil.'
olmak
Çıktı :
Betiği “temp” ve “files” dizin adlarıyla çalıştırdıktan sonra aşağıdaki çıktı ortaya çıkıyor. Çıktıya göre her iki dizin de geçerli konumda mevcut. Daha sonra dizinlerin içeriğini kontrol etmek için “ls” komutu çalıştırılır:
Betiği “testing” ve “new” dizin adlarıyla çalıştırdıktan sonra aşağıdaki çıktı görünür. Çıktıya göre her iki dizin de geçerli konumda mevcut değil. Daha sonra “ls” komutunun çıktısı her iki dizinin de mevcut olmadığını gösterir:
Regex ile “If” İfadesinin Kullanımı
Aşağıdaki komut dosyası, normal ifadeyle 'if' ifadesini kullanarak giriş verilerini doğrulama yöntemini gösterir. Burada kullanıcıdan iki giriş değeri alınır ve “$bookname” ve “$bookprice” değişkenlerinde saklanır. Kodda 'if' koşulu, '$bookname' değişkeninin tüm alfabetik karakterleri içerdiğini ve '$bookprice' değişkeninin bir sayı içerip içermediğini kontrol etmek için kullanılır.
#!/bin/bash#Kullanıcıdan kitabın adını ve fiyatını al
Eko -N 'Kitabın adını girin:'
Okumak kitap adı
Eko -N 'Kitap fiyatını girin:'
Okumak kitap fiyatı
#Kitap adının yalnızca alfabeyi içerdiğini kontrol edin
eğer ! [ [ ' $kitap adı ' =~ [ A-Za-z ] ] ] ; Daha sonra
Eko 'Kitap adı geçersiz.'
başka
Eko 'Kitap adı geçerli.'
olmak
#Kitap fiyatının yalnızca rakam içerdiğini kontrol edin
eğer ! [ [ ' $kitap fiyatı ' =~ [ 0 - 9 ] ] ] ; Daha sonra
Eko 'Kitap fiyatı yalnızca rakam içerebilir.'
başka
Eko 'Kitap fiyatı geçerlidir.'
olmak
Çıktı :
Kitap adı olarak “Bash Programlama” ve kitap fiyatı olarak 78 giriş değerleriyle betiği çalıştırdıktan sonra aşağıdaki çıktı görünür:
Kitap adı olarak 90 ve kitap fiyatı olarak “Bash” giriş değerleriyle betiği çalıştırdıktan sonra aşağıdaki çıktı görünür:
“Vaka” İfadesinin Kullanımı
“case” ifadesi “if-elif-else” ifadesinin alternatifidir ancak “if-elif-else” ifadesinin tüm görevleri “case” ifadesi kullanılarak yapılamaz. “case” ifadesinin basit kullanımı aşağıdaki komut dosyasında gösterilmektedir. Kullanıcıdan güncel ay değeri olarak sayısal bir değer alınır. Daha sonra “case” ifadesinde eşleşen bir değer bulunursa ilgili ay yazdırılır. Aksi halde varsayılan mesaj yazdırılır.
#!/bin/bash#Mevcut ayın değerini sayı olarak al
Okumak -P 'Bugünün ayını sayı olarak girin:' b_ay
#Ayın adını yazdırmadan önce metni yazdır
Eko -N 'Geçerli ayın adı:'
#Girdiye göre eşleşen ayın adını bulun ve yazdırın
dava $b_ay içinde
1 | 01 ) Eko 'Ocak.' ;;
2 | 02 ) Eko 'Şubat.' ;;
3 | 03 ) Eko 'Mart.' ;;
4 | 04 ) Eko 'Nisan.' ;;
5 | 05 ) Eko 'Mayıs.' ;;
6 | 06 ) Eko 'Haziran.' ;;
7 | 07 ) Eko 'Temmuz.' ;;
8 | 08 ) Eko 'Ağustos.' ;;
9 | 09 ) Eko 'Eylül.' ;;
10 ) Eko 'Ekim.' ;;
on bir ) Eko 'Kasım.' ;;
12 ) Eko 'Aralık.' ;;
* ) Eko 'bulunamadı.' ;;
kaçış
Çıktı :
Betiği 6 değeriyle çalıştırdıktan sonra aşağıdaki çıktı görünür:
Betiği 09 değeriyle çalıştırdıktan sonra aşağıdaki çıktı görünür:
Betiği 14 değeriyle çalıştırdıktan sonra aşağıdaki çıktı görünür:
Çözüm
Bu eğitimin 10 örneğinde 'if' ve 'case' ifadelerinin kullanıldığı koşullu mantığın farklı kullanımları gösterilmektedir. Bu eğitimi okuduktan sonra yeni Bash kullanıcıları Bash'te koşullu mantığı kullanma kavramını anlayacaktır.