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.