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 $1="a"; $2="b"; $3="c" durumundaysa program, shift çağırdıktan sonra $1="b"; $2="c" durumuna geçiyor. Böylece tüm parametreleri $1 ile okuyabiliyoruz.#!/bin/bash
# Learning Shell Scripting
# While Loop
INDEX=0
while [ "$#" -ne "0" ]; do
INDEX=$(($INDEX + 1))
echo "Parameter[$INDEX] is $1"
shift
doneBu programı aşağıdaki gibi çağırırsanız, aşağıdaki sonucu alabilirsiniz:
$ ./helloworld a b c d
Parameter[1] is a
Parameter[2] is b
Parameter[3] is c
Parameter[4] is dUntil 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))
doneWhile 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.
