Unix / Linux - Kabuk Döngü Kontrolü

Bu bölümde, Unix'te kabuk döngü kontrolünü tartışacağız. Şimdiye kadar, farklı görevleri gerçekleştirmek için döngüler oluşturmaya ve döngülerle çalışmaya baktınız. Bazen bir döngüyü durdurmanız veya döngünün yinelemelerini atlamanız gerekir.

Bu bölümde, kabuk döngülerini kontrol etmek için kullanılan iki ifadeyi öğreneceğiz−

  • break Beyan

  • continue Beyan

Sonsuz Döngü

Tüm döngülerin sınırlı bir ömrü vardır ve döngüye bağlı olarak durum yanlış veya doğru olduğunda ortaya çıkarlar.

Gerekli koşul karşılanmazsa bir döngü sonsuza kadar devam edebilir. Sonsuz sayıda yürütmeyi sonlandırmadan sonsuza kadar çalışan bir döngü. Bu nedenle, bu tür döngüler sonsuz döngüler olarak adlandırılır.

Misal

İşte basit bir örnek while sıfırdan dokuza kadar olan sayıları görüntülemek için döngü -

#!/bin/sh

a=10

until [ $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

Bu döngü sonsuza kadar devam ediyor çünkü a her zaman greater than veya equal to 10 ve asla 10'dan az değildir.

Break İfadesi

breakifadesi, break ifadesine kadar tüm kod satırlarının yürütülmesini tamamladıktan sonra tüm döngünün yürütülmesini sonlandırmak için kullanılır. Daha sonra, döngünün sonunu izleyen koda iner.

Sözdizimi

Aşağıdaki break deyimi bir döngüden çıkmak için kullanılır -

break

Break komutu, bu formatı kullanarak iç içe bir döngüden çıkmak için de kullanılabilir -

break n

Buraya n belirtir nth çıkışa çevreleyen döngü.

Misal

İşte döngünün en kısa sürede sona erdiğini gösteren basit bir örnek. a 5 olur -

#!/bin/sh

a=0

while [ $a -lt 10 ]
do
   echo $a
   if [ $a -eq 5 ]
   then
      break
   fi
   a=`expr $a + 1`
done

Yürütme üzerine, aşağıdaki sonucu alacaksınız -

0
1
2
3
4
5

İç içe geçmiş for döngüsünün basit bir örneğini burada bulabilirsiniz. Bu komut dosyası, her iki döngüden devar1 equals 2 ve var2 equals 0 -

#!/bin/sh

for var1 in 1 2 3
do
   for var2 in 0 5
   do
      if [ $var1 -eq 2 -a $var2 -eq 0 ]
      then
         break 2
      else
         echo "$var1 $var2"
      fi
   done
done

Yürütme üzerine aşağıdaki sonucu alacaksınız. İç döngüde, argüman 2 ile bir kesme komutunuz vardır. Bu, bir koşul karşılanırsa, dış döngüden ve nihayetinde iç döngüden de çıkmanız gerektiğini gösterir.

1 0
1 5

Devam bildirimi

continue ifade benzer break komutu, yalnızca döngünün geçerli yinelemesinin tüm döngü yerine çıkmasına neden olması dışında.

Bu ifade, bir hata oluştuğunda ancak döngünün bir sonraki yinelemesini yürütmek istediğinizde kullanışlıdır.

Sözdizimi

continue

Break deyiminde olduğu gibi, iç içe döngülerden komutları atlamak için continue komutuna bir tamsayı argümanı verilebilir.

continue n

Buraya n belirtir nth devam etmek için çevreleyen döngü.

Misal

Aşağıdaki döngü, continue continue ifadesinden dönen ve bir sonraki ifadeyi işlemeye başlayan ifade -

#!/bin/sh

NUMS="1 2 3 4 5 6 7"

for NUM in $NUMS
do
   Q=`expr $NUM % 2`
   if [ $Q -eq 0 ]
   then
      echo "Number is an even number!!"
      continue
   fi
   echo "Found odd number"
done

Yürütme üzerine, aşağıdaki sonucu alacaksınız -

Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number