Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Kabuk programlama 2
1. Şah da bizim Sultan da bizim.
Kabuk programlama
Bölüm 2 : if else kalıbı, case kalıbı.
Merhabalar arkadaşlar. Kabuk programlama serisinin son bölümünde hoşgördük sizleri.
Bugünkü yazımızda if else if kalıbını ve case kalıbını öğrenicez…
Başlayalım…
İf else kalıbı
Programlama ile meşğul olan arkadaşlar artık bunun ne olduğunu güzelce biliyorlar. İf else yapısı
programda bir işlemin yapıldığı vey a yapılmadığı zamanlarda verilecek olan komutları (kodları)
çalıştırır. Örnek olarak daha basitce anlatalım
Eger (if) Derslerine iyi çalışırsan (Şart)
Universeyi kazanırsın (komut) -> (olumlu icra)
Çalışmazsan (else) (şart)
Universeyi kazanamazsın. (komut) -> (olumsuz icra)
Evet arkadaşlar gördüğünüz gibi mantığı anlatmaya çalıştım. Programlama dillerinde if else kalıbları en
az deyişkenler kadar önemli yer almaktadır.
Şimdi geçelim kabuki programlamadakı kodlarımıza.
Kabuk programlamızda her if komutu fi komutu ile bitmektedir. Linux komutunu çalıştırır ve komutun
çıkış durumunu ardında gelen then ile birlikte devam ettirir. Kodumuz bir nevi şart mantığı ile çalıştığı
için iki türlü çıkış durumu olacağından else komutunun ardından gelen komut zinciri, diğer çıkış
durumlarını çalıştırır. Örnek için aşağıdakı koda göz atın.
If linux komutu
Then
komut
else
komut
fi
2. if komutu genellikle kendine test komutu ile birlikte kullanım bulur. Bu komut yardımıyla
mantıksal işlemler yapılabilir, sayılar ve hatta diziler karşılaştırılabilir. Anahtar sözcük olan test'ten
sonra seçenekler ve/veya karşılaştırılacak olan değerler yazılır. Her seçenek bir mantıksal işleme
karşılık gelir.
Örneğin
test 5 –eq 3
a=”GS”
test $a=”GS”
sayi=4
test $sayi –eq 4
echo $?
Örneğin yukarıdakı kodlara bir bakalım. Burada –lt parametresi küçüktür anlamındadır
Komutun işletilmesinin ardından kabuğa bir değer dönderilir. Bu değer komut başarılı olarak
işletilmişse 0, değilse 1'dir. Son çalıştırılan tüm Linux komutlarının çıkış değeri $? değişkeninde tutulur.
test komutunun çıkış değeri de bu yolla öğrenilebilir.
Gördüğünüz gibi 0 değerini yani 5 in 3 ten küçük olmadığın yansıttı.
Şimdi 5 rakamını 2 ile evez edelim …
3. Yukarıdakı ekran görüntüsünde de gördüğünüz gibi 1 yani doğru olduğunu yansıttı.
Test komutu yerine parantezler de kullanıla bilmektedir.
[ $sayi –lt 5 ]
[ $sayi –lt 2 ]
Dikkat : Mutlaka parantez eklenen zaman araya boşluk ekleyin.
Yukarıdakı komuta örnek olarak baka bilirsiniz.
Orada size tanış olmayan –p ve e[34me[1m gibi parametreleri gelecek yazımızda öğreneceğiz.
Kısaca –p ile kullanıcıdan bilgi alırken mesaj eklenir. e[34me[1m yazı stilini (renk, italic bold ve sair)
belirlemek için kullanılır.
4. Evet arkadaşlar. Sayıyı 6 olarak seçtimiz için çıktıyı bize büyüktür verdi
Bir de denersek
Gördüğünüz gibi her şey göz karşısındadır.
Aritmetik karşılaştırmalar
-gt büyük
-lt küçük
-ge büyük eşit
-le küçük eşit
-eq eşit
-ne eşit değil
Dizisel karşılaştırma
-z boş dizi
-n tanımlı dizi
= eşit diziler
!= farklı diziler
Dosya karşılaştırması
-f dosya var
-s dosya boş değil
-r dosya okunabilir
-w dosyaya yazılabilir
-x çalıştırılabilir dosya
-h sembolik bağlantı
-c karakter aygıt
-b blok aygıt
Mantıksal karşılaştırmalar
-a VE
-o VEYA
! DEĞİL
Yukarıda verdiğim parametrelerle kendiniz daha iyi şekilde çalışa bilirsiniz.
Case kalıbı
Birkaç alternatif arasından seçim yapmak için kullanılan bir komut olan case, bir eşleştirme
gördüğü anda belirli bir komut kümesini işleme sokar. Tüm yapı esac komutu ile son bulur.
5. case anahtar-sozcuk in
secenek1)
komutlar
;;
secenek2)
komutlar
;;
*)
komutlar
;;
esac
Seçenekler arasında seçenekleri bir birinden ayırmak için özel karakterler (*, [] , ? gibi) kullanılır.
Hiçbir eşleme yapılmadığı zaman *) karakterini kullana bilirsiniz arkadaşlar.
Evet arkadaşlar göreceğiniz gibi program kullanıcıdan veri alıcak. Aldığı verilere göre de Bilgileri
(komutları) yansıtacaktır.
Gördüğünüz gibi bilgileri bize gösterdi. Şimdi mevcul olmayan seçeneği girelim..
6. Gördüğünüz gibi arkadaşlar en altta hata var diye bir mesaj yansıttı.
Bugünlük de burada durdurmak istiyorum...
Saygılarla : Mikayıl İlyasov (Bozk@5k1r)