“Shell” skriptleriňizde aýlanýança nädip ulanmaly


Üç aýlawly konstruksiýa üçin, wagtlaýyn we çenli. Her aýlaw sintaktik we funksional taýdan tapawutlanýan bolsa-da, olaryň maksady belli bir aňlatma baha berlende kod blokynyň üstünden gaýtalamakdyr.

Aýlawyň ýalňyşdygyna baha berilýänçä, bir kod koduny ýerine ýetirmek üçin aýlaw ulanylýança. Bu wagtlaýyn aýlawyň düýbünden tersidir. Aýlaw dogry we aýlaw tersine bolýança aýlaw kod blokyny işledýär.

until [ expression ]
do
	code block
	...
	...
done

Sintaksisini bozalyň.

  • Aýlawy başlamak üçin bir ýa-da goşa ýaýyň içinde aňlatma açar söz gelýänçä ulanmaly.
  • Kod blokuny işledip başlaýança aňlatma ýalňyş diýip baha berilmelidir.
  • Kodyň hakyky bloky ýerine ýetirilen we ýerine ýetirilen arasynda ýerleşdirilýär.

Bu gysga makalada, aşakdaky mysallary ulanyp, gabyk skriptleriňizde aýlaw bolýança nähili ulanmalydygyny öwrenersiňiz.

Ripazgylarda çäksiz aýlaw dörediň

Falsealan sözlemi aňlatma hökmünde ulanyp, çäksiz aýlaw döredip bilersiňiz. Çäksiz aýlawlary simulasiýa etjek bolanyňyzda, skripti wagtal-wagtal geçirjek uky ulanmaga synanyşyň.

count=0
until false
do
	echo "Counter = $count"
	((count++))
	sleep 2
done

Lineeke setir jümlelerini dörediň

Bir setirli aýlaw jümlelerini döredip bilersiňiz. Aşakdaky koda göz aýlaň. Bu, ilkinji çäksiz aýlaw mysalymyz bilen birmeňzeş, ýöne bir setirde. Bu ýerde her sözlemi ýatyrmak üçin bir nokatly (;) ulanmaly.

# until false; do echo "Counter = $count"; ((count++)); sleep 2; done

Akymy arakesme bilen üýtgediň we Beýannamany dowam etdiriň

Arakesme ulanyp, aýlaw wagtynda içindäki jümleleri dowam etdirip bilersiňiz. Arakesme beýany aýlawdan çykar we dolandyryşy indiki jümlä geçirer, dowamy jümle bolsa häzirki gaýtalamany geçer we indiki gaýtalamany aýlawda başlar.

Şol bir çäksiz aýlaw mysalyny ulanýaryn. Bu ýerde hasap bäşlige deň bolsa, dowamy jümlesi aýlaw korpusynyň galan bölegini geçip indiki gaýtalama geçer. Şonuň ýaly-da, san 10-a deň ýa-da uly bolanda aýlaw döwülýär.

count=0
until false
do
  ((count++))
  if [[ $count -eq 5 ]]
  then
    continue
  elif [[ $count -ge 10 ]]
  then
    break
  fi
  echo "Counter = $count"
done

Bu makala üçin. Soonakyn wagtda başga bir gyzykly makala bilen gyzyklanarys, şondan soň okaň we bize goldaw beriň.