FOR döngüleri ve WHILE deyimleri

Bash Script Yazmaya Giriş

Alex Scriven

Data Scientist

Temel FOR döngü yapısı

Python:

for x in range(3):
    print(x)
0
1
2

R:

for (x in seq(3)){
    print(x)
}
[1] 1
[1] 2
[1] 3
Bash Script Yazmaya Giriş

Bash'te FOR döngüsü

Bash'te temel yapı benzerdir:

for x in 1 2 3

do echo $x done
1
2
3
Bash Script Yazmaya Giriş

FOR döngüsü sayı aralıkları

Bash, 'brace expansion' adlı sayısal aralık oluşturmanın pratik bir yoluna sahiptir:

  • {START..STOP..INCREMENT}
for x in {1..5..2}

do echo $x done
1
3
5
Bash Script Yazmaya Giriş

FOR döngüsü üç ifade sözdizimi

FOR döngülerini yazmanın bir diğer yolu 'üç ifade' sözdizimidir.

  • Üç ifadeyi çift parantezle çevreleyin
  • İlk kısım başlangıç ifadesi (x=2)
  • Orta kısım bitiş koşulu (x<=4)
  • Son kısım artırım (veya azaltım) ifadesi (x+=2)

 

 

for ((x=2;x<=4;x+=2))
do 
    echo $x
done
2
4
Bash Script Yazmaya Giriş

Glob genişletmeleri

Bash, dizindeki dosyalar gibi kalıp eşleştirmeyi * ile bir for döngüsünde genişletmeye izin verir.

Örneğin, /books klasöründe iki metin dosyası olduğunu varsayalım:

for book in books/*
do  
    echo $book
done
books/book1.txt
books/book2.txt
Bash Script Yazmaya Giriş

Kabuk içinde kabuk: tekrar

$() gösterimiyle kabuk içinde kabuk oluşturmayı hatırlıyor musunuz?

Bunu bir for döngüsünde yerinde çağırabilirsiniz!

Klasör yapısının şöyle olduğunu varsayalım:

books dizininin yapısı

Bash Script Yazmaya Giriş

Kabuk-içi-kabuktan FOR döngüsüne

Kabuk-içi-kabuk çağrısının sonucunda döngü kurabiliriz:

for book in $(ls books/ | grep -i 'air')

do echo $book done
AirportBook.txt
FairMarketBook.txt
Bash Script Yazmaya Giriş

WHILE deyimi sözdizimi

FOR döngüsüne benzer. Ancak her yinelemede test edilen bir koşul belirlersiniz.

Koşul sağlandığı sürece yineleme sürer!

  • for yerine while kullanın
  • Koşulu köşeli parantez içine alın
    • Sayısal karşılaştırmada IF deyimlerindeki bayraklar kullanılır (örn. -le)
  • Birden çok koşul && (VE) veya || (VEYA) ile zincirlenebilir ya da çift parantez kullanılabilir
  • Döngüyü durduracak bir değişiklik yaptığınızdan emin olun (aksi halde sonsuz döngüye girer!)
Bash Script Yazmaya Giriş

WHILE deyimi örneği

Basit bir örnek:

x=1

while [ $x -le 3 ];
do echo $x ((x+=1)) done
1
2
3
Bash Script Yazmaya Giriş

Sonsuz döngüye dikkat

Kırılma koşulu hiç sağlanmazsa sonsuz WHILE döngüsüne dikkat edin.

x=1
while [ $x -le 3 ]; 
do
    echo $x
    # x artırılmıyor. Asla 3'e ulaşmaz!
    # ((x+=1)) 
done

Bu, 1'i sonsuza dek yazdırır!

Bash Script Yazmaya Giriş

Hadi pratik yapalım!

Bash Script Yazmaya Giriş

Preparing Video For Download...