Shell Scripts: While ve Until Döngüleri
Merhaba arkadaşlar. Linux Shell Script Geliştirmek diye başladığım yazı dizisinin bir diğer yazısında daha birlikteyiz. Şimdiye kadar konuyla ilgili yazdığım yazılardan iyi bir döngü yazmaya yetecek donanımı edindik. Edindik diyorum, çünkü ben de yazarak öğreniyor, öğrenerek yazıyorum. Şimdi de while ve until döngülerinin ne olduklarına ve nasıl kullanıldıklarına bakalım.
While Döngüsü
Döngüler, içlerinde tanımladığımız işlemi belirttiğimiz koşul gerçekleştiği sürece tekrarlayan yapılardır. While döngüsü, içerisine verdiğimiz koşul doğru olduğu sürece verdiğimiz komutları tekrarlayan bir yapıya sahiptir.
Öncelikle while döngüsü nasıl yazılır ona bakalım:
# syntax 1
while [[ condition ]]
do
echo "condition holds"
done
# syntax 2
while [[ condition ]]; do
echo "condition holds"
done
Koşulu yazdıktan sonra koyduğumuz noktalı virgül,
do
anahtar kelimesi ile koşulu aynı satıra yazabilmemizi sağlıyor.
Ben ikinci yazımı tercih ediyorum, gözüme hoş geldiği için.
Program Argümanlarını Okumak isimli yazıda komut satırından gelen argümanları tek tek ekrana yazdırmayı başarmıştık. Şimdi bir döngü yapıp hepsini daha şık bir kod ile yazdırmaya ne dersiniz?
Aşağıdaki kod, parametre sayısı 0 oluncaya kadar ilk parametreyi ekrana yazdırıyor.
Bu kodun en önemli kısmı shift
komutu.
Bu komut parametreleri birer sola kaydırıyor.
Yani örneğin shift
çağırmadan önce argüman değerleri $1="a"
, $2="b"
, $3="c"
durumundaysa,
shift
çağırdıktan sonra $1="b"
, $2="c"
durumuna geçiyor.
Böylece tüm parametreleri $1
değişkenini kullanarak okuyabiliyoruz.
#!/bin/bash
# Learning Shell Scripting
# While Loop
INDEX=0
while [[ "$#" -ne "0" ]]; do
INDEX=$(($INDEX + 1))
echo "Parameter[$INDEX] is $1"
shift
done
Bu programı aşağıdaki gibi çağırırsanız, aşağıdaki sonucu alabilirsiniz:
sedrik@localhost ~ $ ./helloworld a b c d
Parameter[1] is a
Parameter[2] is b
Parameter[3] is c
Parameter[4] is d
Until Döngüsü
While döngüsünün tam tersi şekilde koşulu sorgular. Yani verdiğimiz koşul doğru olmadığı sürece verdiğimiz komutları tekrarlar. Koşul ne zaman doğru olur, o zaman döngü durur.
Aşağıdaki döngü, my_variable
isimli değişken 10 değerinden büyük olduğu zaman duracak.
Yani ekrana 1’den 10’a kadar tüm sayıları yazdırmış olacağız.
#!/bin/sh
# Learning Shell Scripting
# Until Loop
my_variable=1
until [[ "${my_variable}" -gt "10" ]]; do
echo "${my_variable}"
my_variable=$((my_variable + 1))
done
While syntax’ında olduğu gibi, until syntax’ında da,
koşuldan sonraki noktalı virgülü kaldırıp
do
anahtar kelimesini bir sonraki satıra atabilirsiniz.
Ama ben atmamayı tercih edeceğim.
Bana göre böyle daha güzel görünüyor.
Saygılarımı sunarak bu yazımı da sonlandırıyorum. Herkese kodlu geceler dilerim. Esenlikle.