Bash-Scripting – For Loop örnekleri

Yapı 1: Adım sayılarını manuel ile belirleme

#!/bin/bash
# 5 satır çıktı verir ve her çıktıda satır numarasını yazdırır.
for i in 1 2 3 4 5 20
do
echo " $i satır"
done

Yapı 2: Belirli aralıkta adım değeri belirleme

#!/bin/bash
# 100 satır çıktı verir ve her çıktıda satır numarasını yazdırır.
for i in {1..100}
do
echo " $i satır"
done

Yapı 3: Başlama-Sonlanma-Artış şeklinde belirleme

#!/bin/bash
# {Start..End..Increment}

echo "Bash version ${BASH_VERSION}"
for i in {0..10..2}
do
echo "$i. satır"
done

Yapı 4: 3 ifadeli “C” tarzı adım belirleme

#!/bin/bash
# 3 ifadeli C tarzı loop
for (( c=1; c<5; c++))
do
echo "$c. satır."
done

Yapı 5: Sonsuz döngü

#!/bin/bash
for (( ; ; ))
do
echo " sonsuz döngü [çıkmak için CTRL+C]"
done

Yapı 6: Şarta bağlı çıkışlı döngü

for I in 1 2 3 4 5
do
statement1 # "I" nın bütün değerlerini (disaster-condition)'a kadar çalıştırır
statement2
if (disaster-condition)
then
break # döngüden çıkış.
fi
statement3 # döngüde herhangi bir disaste-condition durum olmadığında çalıştırılacak komut
done

Örnek:

#!/bin/bash
# Aşağıdaki script /etc/ dizinindeki bütün dosyalara gider
# Eğer /etc dizininin içinde "resolv.conf" dosyası varsa
# Dosya içerisinde bulunan "nameserver" kayıtlarının toplam adedini yazdır.
# döngüyü bırak.

for file in /etc/*
do
if [ "${file}" == "/etc/resolv.conf" ]
then
countNameservers=$(grep -c nameserver /etc/resolv.conf)
echo "Total ${countNameservers} nameservers defined in ${file}"
break
fi
done

Yapı 7: Şarta bağlı devam

for I in 1 2 3 4 5
do
statement1 # # "I" nın bütün değerlerini (disaster-condition)'a kadar çalıştırır
statement2
if (condition)
then
continue # I'nin döngü içindeki diğer değerine devam et ve statement3'e atla.
fi
statement3
done

#!/bin/bash
# Komut satırından girilen dosyaları tara. EĞer dosyanın .bak uzantısı mevcut ise
# "cp" komutunu atla. .bak yoksa dosyayı .bak uzantısı ile aynı dizine kopyala
#
FILES="$@"
for f in $FILES
do
if [ -f ${$f}.{bak,tmp} ]
then
echo "Skipping $f file..."
continue
fi
/bin/cp rm -rf $f.temp
done

Kaynak:

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s