Döngüler konumuzun ikinci bölümüne geldik. Diğer bölümleri daha iyi anlamanız için birinci bölümü iyice okumanız gerekiyor çünkü orada önemli ve temel bilgiler mevcut. Bu bölümde anlattıklarımı kullanacağınızı çok sanmıyorum ama bir yerlerde görürseniz şaşırmayın diye anlatmak istiyorum. İlk önce iskeletimize bakalım.

Gördüğünüz gibi iskelet, while iskeletinin aynısı. Sadece anahtar kelimemiz değişiyor; 'until'. until döngüsü, while döngüsünün tam tersi şekilde çalışır. Elbette, çalışma mantığı aynıdır ancak burada bir eşitlik söz konusu değil; eşitsizlik söz konusudur. Ne demek istiyorum?

Yukarıda, bildiğiniz bir if bloğu mevcut. Burada bir değişkenimiz var ve bu değişkenin değeri 'Cyber'. if koşulunda ise '!=' ifadesini kullandık. Burada şunu dedik: "Eğer $name, "Cyber Worm" değilse...". Yani burada bir eşitsizlik arıyoruz, öyle değil mi?
Ancak burada, bu işlemi tek seferde yapabiliyoruz. Döngü kullanmayı öğrenmemiz lazım.

until [ $name != "Cyber Worm" ] bu kod true'dur. Yani gerçekten de name, 'Cyber Worm'a eşit değildir. Burada; "eğer name, "Cyber Worm"a eşit değilse..." dedik. Peki, sizce bu kod çalışır mı? Eğer eşit değilse, echo "Eşit değil." dedik ve koşulumuz true. Normalde ekrana yazı verir yani çalışması gerekir.

Gördüğünüz gibi çıktıda herhangi bir şey gözükmüyor. Peki, sorun nerede?
Biraz önce until döngüsünün 'eşitsizlik' aradığından söz ettik. Buna göre; until'in çalışması için ona verilen koşulun true değil, false olması gerekir. Şu an, name değişkeni gerçekten de Cyber Worm'a eşit değil; bu durum, bu koşulu true yapar. Şimdi biraz değişiklik yapalım.

Yukarıdaki ekran görüntüsündeki mavi yazıyı umursamayın; biraz önceden kalmıştır.
Bu defa '!=' yerine '==' kullandım. Koşula baktığımızda koşulun 'false' olduğunu görüyoruz. Çünkü orada söylediğimiz şey şu: "name, Cyber Worm'a eşit ise...". Peki, $name gerçekten Cyber Worm'a mı eşit? Hayır, kendisinin tuttuğu değer Cyber. Dolayısıyla bu koşul false oluyor.
Kodun çalıştığını da görüyorsunuz. Bu, biraz önce söylediğim; 'until'e verilen koşul false olmalı' kuralından gelir. Ufak bir örnek daha yapalım.

until [ $number -gt 10 ] komutu; "number, 10'dan büyükse..." şeklinde yorumlanır. Fakat number, 10'dan büyük değil; zaten until, false koşul istiyordu. Dolayısıyla kodumuz gerçekten de çalıştı ve bunu 10 defa uyguladı çünkü biz bu değeri birer birer arttırdık. Daha sonra bir noktada number değişkeni 11 oldu ve until döngüsünün koşulu true değere döndü. Çünkü bu sefer gerçekten de number, 10'dan büyük konuma geldi.
İşte, until bu şekildeydi. Peki, bunu neden kullanmayacağınızı söyledim?
while döngüsü daha yaygındır ve until ile yaptıklarınızın hepsini while ile de yapabilirsiniz. Bu noktada while ile yaptıklarınızı da until ile yapabilirsiniz. Seçim, size kalmıştır.

Gördüğünüz gibi aynı şeyi sadece '!=' operatörü ile while kullanarak yaptım.
Yayınlanma Tarihi: 2022-09-17 14:16:17
Son Düzenleme Tarihi: 2022-09-19 20:50:52