Mar a sgrìobhas tu Bash WHILE-Loops

Comandan, Co-chòrdadh, agus Eisimpleirean

Faodaidh tu sreath de dh 'òrduighean a dhèanamh le bhith gan sgrìobhadh ann am faidhle sgriobt agus an uair sin ga ruith.

Is e faidhle sgriobta a th 'ann ach faidhle teacsa, mar as trice leis an leudachadh faidhle .SH, anns a bheil sreath de stiùiridhean a ghabhadh a chur gu bàs bhon loidhne-àithne ( sligean ).

Fhad 'sa tha eisimpleirean Loop

Gu h-ìosal tha eisimpleir de lùb fad. Nuair a thèid a chur gu bàs, clòidhidh am faidhle sgriobt seo na h-àireamhan 1 gu 9 air an sgrion. Tha an ùine-aithris a 'toirt dhut barrachd sùbailteachd airson a bhith a' comharrachadh an staid crìochnachaidh na an lùib-lùib .

#! / bin / bash count = 1 fhad 'sa tha [$ cunntadh -le ​​9] dèan echo "cadal" $ cunntadh "cadal 1 ((cunntadh ++)) air a dhèanamh

Mar eisimpleir, is urrainn dhut an sgriobt roimhe seo a dhèanamh le lùb neo-chrìochnach le bhith a 'fàgail an aithris meudachaidh "((count ++))":

#! / bin / bash count = 1 fhad 'sa tha [$ cunntadh -le ​​9] dèan echo "$ count" cadal 1 air a dhèanamh

Bidh an aithris "cadal 1" a 'stad a' ghnìomhachadh airson 1 dàrna air gach aiseag. Cleachd an goirid-shortcut Ctrl + C airson crìoch a chur air a 'phròiseas.

Faodaidh tu cuideachd lùb neo-chrìochnach a chruthachadh le bhith a 'cur colon mar a' chumha:

#! / bin / bash count = 1 fhad: dèan eco "$ count" cadal 1 ((cunntadh ++)) air a dhèanamh

Gus iomadh suidheachadh a chleachdadh anns an ùine-lùb, feumaidh tu a bhith a 'cleachdadh an comharran dàille ceàrnagach dùbailte:

cunnt = 1 dèante = 0 fhad 'sa tha [[$ count -le 9] && [$ done == 0]] dèan eco "$ count" cadal 1 ((cunntas ++)) ma tha [$ count == 5]; $ done = $ dè rinn mi

Anns an sgriobt seo, tha an caochladh "dèante" air a thòiseachadh gu 0 agus an uairsin cuiridh e gu 1 nuair a ruigeas an cunnt 5. Tha an suidheachadh lùb ag innse gun lean an lùb fhad cho fada 'sa tha "cunntadh" nas lugha na naoi agus tha "dèante" co-ionnan gu neoni. Mar sin, bidh na lùban a 'falbh nuair a tha an cunntadh co-ionann 5.

Tha "&&" a 'ciallachadh loidsigeach "agus" agus "||" ciallachadh loidsigeach "no".

Tha comharradh eadar-dhealaichte airson na co-sgrìobhainnean "agus" agus "no" ann an suidheachaidhean "-a" agus "-o" le camagan singilte ceàrnagach. An suidheachadh gu h-àrd:

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

... a bhith air ath-sgrìobhadh mar:

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

Mar as trice bidh e a 'leughadh faidhle teacsa le lùb fhad. Anns an eisimpleir a leanas, tha an sgriobt bash a 'leughadh an loidhne susbaint le loidhne faidhle ris an canar "inventory.txt:"

FILE = inventory.txt exec 6

Bidh a 'chiad loidhne a' sònrachadh an ainm faidhle ion-chuimseach ris an atharrachadh "FILE". Tha an dàrna loidhne a 'sàbhaladh an "ionaid àbhaisteach" anns an tuairisgeul fhaidhlichean "6" (dh'fhaodadh e luach sam bith eadar 3 agus 9). Tha seo air a dhèanamh gus an tèid "in-ghabhail àbhaisteach" a thoirt air ais gus tuairisgeul fhaidhle "0" aig deireadh na sgriobt (faic an aithris "exec 0 Anns an 3mh loidhne tha am faidhle ion-chuideachaidh air a shònrachadh gu tuairisgeul faidhle" 0, "a tha air a chleachdadh airson a bhith a 'toirt a-steach coitcheann. Bidh an aithris "leugh" a' leughadh loidhne bhon fhaidhle air gach ath-aiseag agus a 'sònrachadh e ris an caochlaideach "line1".

Gus fàgail astar-ùine a dhèanamh ro-làimh, faodaidh tu an aithris briseadh mar seo a chleachdadh:

cunntadh = 1 dèante = 0 fhad 'sa tha [$ cunntadh -le ​​9] dèan echo "cadal" cunntadh 1 ((cunntadh ++)) ma tha [$ cunntadh == 5] an uair sin briseadh mac-samhail crìochnaichte

Bidh an aithris bhriseadh a 'toirt a-mach prògram a' cur crìoch air a 'phrògram fhad' sa bhios e a 'lùbadh agus a' cur a-mach aithrisean sam bith às a dhèidh. Anns a 'chùis seo, tha an aithris "echo Crìochnaichte."

Tha an aithris leantainneach, air an làimh eile, a 'toirt sgiobadh a-mhàin don chòrr den aithris fhad-loop den ath-shruth a th' ann an-dràsta agus a 'leum gu dìreach chun an ath thurais:

cunntadh = 1 dèante = 0 fhad 'sa bhios [$ cunntadh -le ​​9] a' cadal 1 ((cunntadh ++)) ma tha [$ count == 5] an uairsin lean air adhart "$ count" air a dhèanamh deiseil crìochnaichte

Anns a 'chùis seo, thèid an aithris "leantainn" a thoirt gu buil nuair a ruigeas an "cunntadh" caochlaideach 5. Tha seo a' ciallachadh nach tèid an aithris a leanas (mac-samhail "$ count") a chur gu bàs air an ath-sgrùdadh seo (nuair a tha luach "cunntadh" 5).