Programlama geçmişiniz varsa daha rahat düşüneceksiniz ancak yoksa sakince okumaya devam edin. Örneğin bir diziniz (array) olduğunu ve bu dizide birkaç tane isim tuttuğunuzu varsayalım. Bu durumda o dizi içerisinden bir isim çekmek istediğinizde şuna benzer bir kullanım sağlarsınız (dilden dile değişir):

Aynı şeyi Bash için de yapabilirsiniz. Demek istediğim, oldukça uzun süren bir işlem oluyor. Peki, dizi tanımlar tanımlamaz bize ne istediğimizi soran ve bunu sürekli olarak yapan bir mekanizma olsa nasıl olur? İşte, select döngüsü bu işe yarar. Zaten 'select' kelimesi 'seçmek' anlamına gelir.

Dikkat edelim. Anahtar kelimemiz 'select' olacak şekilde diğer döngüler gibi bir değişken ve 'in' anahtar kelimesini giriyoruz. Daha sonra elemanlarımızı giriyoruz. Geri kalan kısım ise bildiğiniz gibi 'do', 'done' şeklinde.
İsterseniz bunu çalıştırıp ne olacağına bakalım.

Ne kadar güzel bir çıktı, sizce de öyle değil mi? Verdiğimiz elemanları tek tek numaralandırıp alt alta sıralıyor ve dikkat edin; kırmızı ok ile gösterdiğim kısımda bizden bir girdi bekliyor. Yani aralarından birini seçmemizi istiyor. Bu noktada biz, elemanın ismini girmek yerine sadece numarasını gireceğiz.

3 numaralı (index değil) elemanı seçtim ve çıktımız istediğimiz gibi geldi: "Selected: Cyber Worm". Yine kırmızı ok ile işaretlediğim kısma bakın; bizden yeni bir girdi bekliyor. Elbette, select de bir döngü olduğu için böyle oluyor. Tekrar herhangi bir numara girmemiz durumunda çıktımız gelecektir. Peki, olmayan bir eleman seçsek ne olur?

Doğal olarak "Selected:" şeklinde bir çıktı aldık yani bir isim falan yazdırmadı. Çünkü öyle bir eleman yok. Böyle bir durumla karşılaşmamak adına kullanıcıyı uyarsak güzel olmaz mı?
Bunun için if yapılarını kullanabiliriz ancak bunu kullanırsak hem karmakarışık hem de upuzun bir kod yazmış oluruz. O yüzden ben, case yapılarını tercih edeceğim.

Yaptıklarımız ile işlemlerimiz oldukça başarılı bir şekilde sürüyor. Bu blogda yaptıklarımız, çok basit uygulamalardı; yalnızca echo ile seçtiğimiz elemanı yazdırdık. Ancak önemli bir seçim yaptırdıktan sonra çok çeşitli komutlar da yazabilirsiniz. Örneğin birkaç hack aracını tek bir script içerisinde yazdığınızı varsayalım ve kullanıcıya, giriş menüsü olarak saldırı çeşitlerini sunduğunuzu düşünelim. Bu durumda kullanıcı seçim yaptıktan sonra gerekli işlemleri sürdürürsünüz. Şu an bu dediklerim kafanıza oturmamış olabilir ancak örneğin break - continue komutlarını, fonksiyonları gördükten sonra fikriniz değişecektir. Kısacası bazı durumlarda select, gerçekten çok lazım olabilecek bir döngü çeşididir.
Yayınlanma Tarihi: 2022-09-17 22:45:56
Son Düzenleme Tarihi: 2022-09-20 17:58:48