Bash: Loops

Bu yazıda, Bash ile script yazarken döngüleri nasıl kullanabileceğimizi ele alacağız. For, while ve until döngülerini karşılaştıracağız.

  • döngüler, ‘done’ komutu ile bitiyor.
  • if statement’da if-then kullandığımız gibi döngülerde de for-do, while-do, until-do terimlerini kullanıyoruz.

while

#!/bin/bash
i=0

while [ $i -le 10 ]; do
    echo "i = $i"
    ((i++))
done

until

#!/bin/bash
i=0

until [ $i -gt 10 ]; do
    echo "i = $i"
    ((i++))
done

for

for döngüsünün syntaxı biraz daha farklı. while ve until döngülerinde bir counter ilerlerken, for döngüsünde bir array içerisindeki elemanlar için döndürüyoruz.

#!/bin/bash
for i in $(ls); do
    echo "item: $i"
done

Yukarıdaki örneğin aslında pek de bir mantığı yok sadece for loop’u örneklemek için verilmiş. ls komutu çalışıyor ve her bir elementi tek tek yazdırıyor. İçeride bir if statement kullanarak daha mantıklı hale getirilebilir.

#!/bin/bash
for i in 1 2 3; do
    echo "(($i**2))"
done
> 1
> 4
> 9

Array’i 1 2 3 diye belirtmek yerine aşağıdaki gibi brace expansion’dan faydalanabiliriz. 1’den 8’e kadar 2’şer artarak gidecektir.

#!/bin/bash
for i in {1..8..2}; do
    echo "(($i**2))"
done
> 1
> 9
> 25
> 49

Veya bir array içerisinde bu örnekteki gibi de döngü yazabiliriz.

#!/bin/bash
array=("vader" "master yoda" "hello there" "the senate")
for i in ${array[@]}; do
    if [[ $i == "the senate" ]]
    echo "I'm the senate"
done

C’ye benzer dillerden alışkın olduğumuz loop yapısına gelelim.

#!/bin/bash
for (( i=0; i<=10; i++)); do
    echo "$i"
done

Next Episode

published on 16.11.2019

Eğer test etmek istediğimiz bir durum varsa if statement kullanırız. Birden fazla durum varsa nested if statement kullanabiliriz ama sayı arttıkça if statement karmaşıklaşacaktır. Burada devreye case giriyor. Syntax’ı basit.

Previous Episode

published on 16.11.2019

Bu yazıda, bash ile if sorgularını ve bu sorgularda kullanılacak karşılaştırma operatorlerini kısaca ele alacağız. […] Temel syntax aşağıdaki gibidir. […] a=5 b=2 if [[ a -gt b ]]; then echo "b" elif [[ a -eq b ]]; then echo "b" else echo "b" fi Noktalı virgülü …

TAG CLOUD