Sidee loo qoraa Bashaalka WHILE-Loops

Amar, Ereyga, iyo Tusaalooyinka

Waxaad sameyn kartaa amarro amar ah adoo ku qoraya faylka qoraalka ah kadibna ku shaqeynaya.

Faylka qoraalka waa mid fudud oo ah faylka qoraalka ah, badanaa leh farta dheeraadka ah ee SHH, kaas oo ku jira taxane tilmaamo oo laga yaabo in laga hirgeliyo xariiqda taliska ( shell ).

Inkastoo Tusaalooyinka Loop

Hoos waxaa ku yaal tusaale tusaale ah mudada. Marka la dilo, faylka codkani wuxuu daabacayaa lambarada 1 illaa 9 shaashadda. Qodobada-caddayntu waxay ku siinaysaa dabacsanaan dheeraad ah oo muujinaysa xaalada joojinta marka loo eego qadka -loop .

Tirada #. / bin / bash = 1 halka [$ count-9] ay ku qortaan "count" hurdada 1 ((tirin + +))

Tusaale ahaan, waxaad ka dhigi kartaa qoraalka hore ee loo yaqaan "loop" oo ah adigoo ka tegaya qoraalka kore "(tirin + +))":

Tirada #. / bin / bash = 1 halka [$ count-to 9] ay ku qortaan "$ count" hurdo 1 la qabtay

Qoraalka "Hurdada 1" ayaa ka dhigeysa dilka 1 ilbidhiqsi kasta. Isticmaal masawirka fariimaha Ctrl + C si aad u joojiso hawsha.

Waxa kale oo aad abuuri kartaa qalab aan caadi ahayn adigoo sita caloosha sida xaaladda:

Tirada #! / bin / bash = 1 inta ay socoto: samee "$ count" hurdo 1 ((tirin + +))

Si aad u isticmaasho shuruudo dhowr ah mudada-loop, waa inaad isticmaashaa qoraalka laba-geesood ee laba geesoodka:

xisaabin = 1 sameeyey = 0 halka [[$ count-9] iyo & [$ done == 0]] 'hurdiga' $ count hurdada 1 ((tirin + +)) haddii [$ count == 5]; kadib $ do = 1 fi oo la sameeyay

Qodobkan, isbedelka "la sameeyay" ayaa loo qoondeeyay 0 kadibna wuxuu u dhigmayaa 1 marka tirada tiradu gaarto 5. Xaaladda wareegga waxay sheegaysaa in muddada loojooguhu sii socon doono ilaa inta "tiradu" ay ka yar tahay sagaal iyo "la sameeyay" eber. Sidaa darteed wareegyada wareegyada marka tiradu u dhiganto 5.

"& &" Macnaheedu waa macquul "iyo" iyo "||" macnaheedu waa macquul "ama".

Muuqaal kale oo loogu talagalay isku-xirayaasha "iyo" iyo "ama" xaaladaha "waa" -a "iyo" -o "oo leh garbaha mid kali ah. Xaaladda kor ku xusan:

[[$ count -la 9] && [$ done == 0]]

... ayaa dib loo qori karaa:

[$ count -le 9] -a [$ done == 0]

Akhrinta faylka qoraalka waxaa sida caadiga ah la sameeyaa wakhti looxad. Tusaalahan soo socda, script script wuxuu akhriyaa lineka ku jira khadka faylka loo yaqaan "inventory.txt:"

FILE = liiska taariiqda

Khadka ugu horeeya wuxuu ku magacawaa magaca faylka xogta "FILE". Khadka labaad wuxuu ka dhigayaa "talooyinka caadiga ah" ee ku jira sharaxaadda faylka "6" (waxay noqon kartaa mid u dhaxaysa 3 ilaa 9). Tani waxaa la sameeyaa si ay "udub dhexaad ah" dib loo soo celiyo si loo fayl-gareeyo "0" dhamaadka qoraalka (eeg qoraalka "exec 0") Khadka 3aad faylka la geliyo waxaa loo xilsaaray faylka "0," kaas oo loo isticmaalo qoraalka caadiga ah. "Akhrinta" qoraalka ayaa markaas ka akhrisa xariijin faylka ah oo ku saabsan jadwal kasta oo wuxuu ku meeleeyaa variable "line1".

Si aad uga baxdo wakhti-isdhaafsi, waxaad isticmaali kartaa bayaanka jabitaanka sidan oo kale:

xisaabin = 1 sameeyey = 0 halka [$ count-9] ay ku qortaan "$ count" hurdada 1 ((tirin + +)) haddii [$ count == 5] ka dibna la jabiyo echo

Bayaanka qarxinta ayaa ka dhaadhicinaya fulinta barnaamijka ilaa dhamaadka halka loo yaqaan "and loo soo saaro wax hadal ah oo soo socda. Xaaladdan oo kale, bayaanka "echo Finished."

Hadalka sii socoshada, dhanka kale, ku dhaji kaliya inta ka harsan inta baddalka loo yaqaan "boombalada" ee xilligaan xaadirka ah iyo si toos ah u soo jiidanayaan soo socda:

xisaabin = 1 sameeyey = 0 halka [$ count-9] hurdada 1 ((tirin + +)) haddii [$ count == 5] ka dibna sii soco "$ count"

Kiiskan, "sii wadida" waa la fuliyaa marka isbedelka "tira" uu gaaro 5. Taas macnaheedu waa qoraalka dambe ("$ count") ayaan lagu fulineynin qadiyadan (marka la qiimeeyo "tirinta" 5).