Kif tuża sakemm Loop fl-Scripts Shell tiegħek


Fil bash għal, filwaqt li, u sakemm huma tliet linji kostruzzjoni. Filwaqt li kull loop tvarja sintassikament u funzjonalment l-iskop tagħhom huwa li jtenni fuq blokka ta 'kodiċi meta ċerta espressjoni tiġi evalwata.

Sakemm il-linja tintuża biex tesegwixxi blokka ta' kodiċi sakemm l-espressjoni tiġi evalwata bħala falza. Dan huwa eżattament l-oppost ta 'loop while. Filwaqt li loop imexxi l-blokk tal-kodiċi waqt li l-espressjoni hija vera u sakemm loop tagħmel l-oppost.

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

Ejja nkissru s-sintassi.

  • Biex tibda l-linja għandek tuża kelma prinċipali sakemm segwita minn espressjoni fi ħdan ċingi singoli jew doppji.
  • L-espressjoni għandha tiġi evalwata bħala falza sakemm tibda taħdem il-blokk tal-kodiċi.
  • Il-blokk attwali tal-kodiċi jitqiegħed bejn do u done.

F'dan l-artikolu qasir, int se titgħallem kif tuża sakemm loop fl-iskripts tal-qoxra tiegħek billi tuża l-eżempji li ġejjin.

Oħloq Loop Infinit fl-Iskripts

Tista 'toħloq linja infinita billi tuża dikjarazzjoni falza bħala espressjoni. Meta tipprova tissimula loops infiniti ipprova uża sleep li jgħaddi l-iskrittura perjodikament.

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

Oħloq Dikjarazzjonijiet ta' Linja Unika

Tista 'toħloq dikjarazzjonijiet ta' loop b'linja waħda. Agħti ħarsa lejn il-kodiċi hawn taħt. Dan huwa l-istess bħall-ewwel eżempju tagħna ta 'linja infinita iżda f'linja waħda. Hawnhekk għandek tuża punt u virgola (;) biex ittemm kull dikjarazzjoni.

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

Alter Flow b'waqfa u kompli Dikjarazzjoni

Tista 'tuża waqfa u tkompli dikjarazzjonijiet ġewwa while loop. Id-dikjarazzjoni tal-waqfien se toħroġ mill-linja u se tgħaddi l-kontroll għad-dikjarazzjoni li jmiss filwaqt li l-istqarrija tkompli taqbeż l-iterazzjoni attwali u tibda l-iterazzjoni li jmiss fil-linja.

Qed nuża l-istess eżempju ta 'linja infinita. Hawnhekk meta l-għadd huwa ugwali għal ħamsa tkompli dikjarazzjoni se tiżdied fuq l-iterazzjoni li jmiss taqbeż il-bqija tal-korp loop. Bl-istess mod, il-linja tinkiser meta l-għadd ikun ugwali għal jew akbar minn 10.

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

Dak hu għal dan l-artikolu. Aħna naqbduk b'artiklu ieħor interessanti dalwaqt 'sa' imbagħad kompli aqra u kompli ssostnina.