Unix / Linux - Kabuk Döngü Türleri
Bu bölümde, Unix'teki kabuk döngülerini tartışacağız. Döngü, bir dizi komutu tekrar tekrar yürütmenizi sağlayan güçlü bir programlama aracıdır. Bu bölümde, kabuk programcılarının kullanabileceği aşağıdaki döngü türlerini inceleyeceğiz -
- While döngüsü
- For döngüsü
- Kadar döngü
- Seçme döngüsü
Duruma göre farklı döngüler kullanacaksınız. Örneğin,whiledöngü, verilen koşul doğru kalana kadar verilen komutları yürütür; until döngü, belirli bir koşul gerçekleşene kadar yürütülür.
İyi bir programlama pratiğine sahip olduktan sonra, uzmanlık kazanacak ve böylece duruma göre uygun döngüyü kullanmaya başlayacaksınız. Buraya,while ve for döngüler, diğer programlama dillerinin çoğunda mevcuttur. C, C++ ve PERL, vb.
Yuvalama Döngüleri
Tüm döngüler, yuvalama konseptini destekler; bu, bir döngüyü başka bir benzer veya farklı döngülerin içine koyabileceğiniz anlamına gelir. Bu yuvalama, ihtiyacınıza bağlı olarak sınırsız sayıda olabilir.
İşte bir yuvalama örneği whiledöngü. Diğer döngüler, programlama gereksinimine bağlı olarak benzer şekilde iç içe yerleştirilebilir -
Döngüler sırasında yuvalama
Bir while döngüsünü başka bir while döngüsünün gövdesinin bir parçası olarak kullanmak mümkündür.
Sözdizimi
while command1 ; # this is loop1, the outer loop
do
Statement(s) to be executed if command1 is true
while command2 ; # this is loop2, the inner loop
do
Statement(s) to be executed if command2 is true
done
Statement(s) to be executed if command1 is true
done
Misal
İşte döngü iç içe yerleştirmenin basit bir örneği. Dokuza kadar saydığınız döngünün içine başka bir geri sayım döngüsü ekleyelim -
#!/bin/sh
a=0
while [ "$a" -lt 10 ] # this is loop1
do
b="$a"
while [ "$b" -ge 0 ] # this is loop2
do
echo -n "$b "
b=`expr $b - 1`
done
echo
a=`expr $a + 1`
done
Bu, aşağıdaki sonucu verecektir. Nasıl olduğuna dikkat etmek önemlidirecho -nburada çalışıyor. Buraya-n seçeneği, yankının yeni bir satır karakteri yazdırmasını önlemesini sağlar.
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0