Sadık KILIÇ

Web Tabanlı Hafıza Yerleşimi

Bash Döngüler

    Bash’de

  • iterasyon yapıları nasıl kullanılır?
  • Sonsuz döngü (infinite loop) nasıl kurulur?
  • Döngü ile dosya satır satır nasıl okunur?

Bu sorulara cevap olabilecek ve sıklıkla ihtiyaç duyulan döngüleri burada basit kullanımlarıyla ve örnekleriyle listelemek istedim. Bash üzerinde duruma ve ihtiyaca göre döngüler çeşitli şekillerde yazılılabilir. Döngülerin basit kullanımları için örnekleri inceleyiniz

    Bir sayı veya karakter dizisini saymak

  • Klasik for döngüsü
    LIMIT=5
    for ((i=1; i <= LIMIT ; i++)) do
     echo -n "i=$i "
    done
    i=1 i=2 i=3 i=4 i=5
  • Klasik while döngüsü
    i=0
    while [ $i -lt 4 ]
    do
     echo -n "i=$i "
     i=$[$i+1]
    done
    i=0 i=1 i=2 i=3
  • Belirli bir sayı aralığını saymak
    for i in {0..5}
    do 
     echo -n "i=$i "
    done
    i=0 i=1 i=2 i=3 i=4 i=5
  • Belirli sayı aralığını atlayarak saymak
    for i in {0..10..2}
    do
     echo -n "i=$i "
    done
    i=0 i=2 i=4 i=6 i=8 i=10

    Burada {a..b..c} formatıyla belirtilen kısım sayesinde a’dan b’ye kadar c kadar atlayarak döngü devam ediyor.

  • Belirli bir diziyi döngüde kullanmak
    for i in {aa,ab,ba,bb}
    do 
       echo -n "i=$i "
    done
    i=aa i=ab i=ba i=bb
  • Sabit ve degisken parçalara sahip diziyi döngüde kullanmak
    for i in a{0..5}b
    do
       echo -n "i=$i "
    done
    i=a0b i=a1b i=a2b i=a3b i=a4b i=a5b
  • seq kullanarak saymak
    for i in $(seq 0 5)
    do
       echo -n "i=$i "
    done
    i=0 i=1 i=2 i=3 i=4 i=5
  • seq ile atlayarak saymak
    for i in $(seq 0 2 10)
    do
       echo -n "i=$i "
    done
    i=0 i=2 i=4 i=6 i=8 i=10

    Yine yukarda bahsedilen kullanıma benzer şekilde {a..b..c} formatıyla belirtilen kısım sayesinde a’dan b’ye kadar c kadar atlayarak döngü devam ediyor.


    Sonsuz döngüler (infinite loops)

  • for (( ; ; ))
    do
     echo "Sonsuz döngü (Durdurmak icin  CTRL+C )"
     sleep 1
    done
    Sonsuz döngü (Durdurmak icin  CTRL+C )
    Sonsuz döngü (Durdurmak icin  CTRL+C )
    Sonsuz döngü (Durdurmak icin  CTRL+C )
    Sonsuz döngü (Durdurmak icin  CTRL+C )
    ^C
  • while true
    do
     echo "Sonsuz döngü (Durdurmak icin  CTRL+C kullanın)"
     sleep 1
    done
    Sonsuz döngü (Durdurmak icin  CTRL+C kullanın)
    Sonsuz döngü (Durdurmak icin  CTRL+C kullanın)
    Sonsuz döngü (Durdurmak icin  CTRL+C kullanın)
    Sonsuz döngü (Durdurmak icin  CTRL+C kullanın)
    ^C


    Döngülerde Dosya listesi kullanmak

  • Belirli bir dizindeki php dosyalarının satır sayılarını öğrenmek istesek;

    for file in /tmp/sadik/*.php
    do
     wc -l $file
    done
    73 /tmp/sadik/cmc_db_config.inc.php
    55 /tmp/sadik/cmc_db_execute.inc.php
    85 /tmp/sadik/cmc_db_recordset.inc.php
    67 /tmp/sadik/example.php
  • Burada belirtilen dizindeki “.php” uzantılı dosyalar sırayla “file” degiskenine atanır, wc komutuyla sıradaki dosyanın satır sayısını alınıyor.


    Döngü ile Dosyaları satır satır okumak

    Örneğin DOSYA isimli bir dosyamız olsun ve sunuculara ait hostname bilgisini içersin.

    cat DOSYA
    hostname1
    hostname2
    hostname3
    hostname4

    Bu dosyayı döngü içerisinde satır satır okumak ve her satır için işlem yapmak istediğimizde;

  • For döngüsü

    for line in `cat DOSYA`
    do
     echo "line=$line"
    done
    line=hostname1
    line=hostname2
    line=hostname3
    line=hostname4
  • While döngüsü (Yöntem I)
    while read line
    do
     echo "line=$line"
    done < DOSYA
    line=hostname1
    line=hostname2
    line=hostname3
    line=hostname4
  • While döngüsü (Yöntem II)
    cat DOSYA | 
    while read line
    do
     echo "line=$line"
    done
    line=hostname1
    line=hostname2
    line=hostname3
    line=hostname4
  • yukardaki kullanımlar iş görecektir.

, , ,

Leave a Reply

Your email address will not be published. Required fields are marked *