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