Ki jan yo ekri bach pou tout tan-Loops

Kòmand, sentaks, ak egzanp

Ou ka egzekite yon sekans nan kòmandman pa ekri yo nan yon dosye script ak Lè sa a, kouri li.

Yon dosye script se tou senpleman yon dosye tèks, anjeneral ak ekstansyon nan dosye .Sh, ki gen yon sekans nan enstriksyon ki ta ka tou ap egzekite nan liy lan lòd ( koki ).

Pandan ke Egzanp Loop

Anba a se yon egzanp yon riban pandan y ap. Lè egzekite, dosye script sa a ap enprime nimewo 1 a 9 sou ekran an. Pandan ke-deklarasyon an ba ou plis fleksibilite pou espesifye kondisyon an revokasyon pase pou-riban an .

#! / bin / bach konte = 1 pandan [$ konte -le 9] fè eko "$ konte" dòmi 1 ((konte ++)) fè

Pou egzanp, ou ka fè script la anvan yon bouk enfini pa oblije deklarasyon an increment "((konte ++))":

#! / bin / bach konte = 1 pandan y ap [$ konte -le 9] fè eko "$ konte" dòmi 1 fè

"Dòmi 1" deklarasyon an pozize ekzekisyon an pou 1 dezyèm sou chak iterasyon. Sèvi ak Ctrl + C klavye a mete fen nan pwosesis la.

Ou ka kreye tou yon bouk enfini pa mete yon kolon kòm kondisyon an:

#! / bin / bach konte = 1 pandan: eko "$ konte" dòmi 1 ((konte ++)) fè

Yo nan lòd yo sèvi ak kondisyon miltip nan riban an pandan y ap, ou gen yo sèvi ak notasyon an doub kare bracket:

konte = 1 fè = 0 pandan [[$ count -le 9] && [$ done == 0]] fè eko "$ konte" dòmi 1 ((konte ++)) si [$ count == 5]; Lè sa a, $ fè = 1 fi fè

Nan sa a script, varyab la "fè" inisyalize a 0 ak Lè sa a, mete nan 1 lè konte a rive nan 5. Kondisyon an bouk eta ke riban an pandan y ap kontinye osi lontan ke "konte" se mwens pase nèf ak "fè" egal nan zewo. Se poutèt sa, pasan yo sòti lè konte a egal 5.

"&&" vle di lojik "ak" ak "||" vle di lojik "oswa".

Yon notasyon altènatif pou konjonksyon yo "ak" ak "oswa" nan kondisyon se "-a" ak "-o" ak parantèz kare sèl. Kondisyon ki pi wo a:

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

... te kapab ekri tankou:

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

Lekti yon dosye tèks anjeneral fè ak yon riban pandan y ap. Nan egzanp sa a, bach script la li liy ki nan liy pa liy nan yon dosye yo rele "inventory.txt:"

DATE = inventory.txt ekzekitif 6

Liy nan premye asiyen non an dosye opinyon nan varyab la "FILE". Dezyèm liy la sove "D 'estanda" nan descriptor dosye a "6" (li ta ka nenpòt valè ant 3 ak 9). Sa a se fè sa ke "D 'estanda" kapab retabli nan dosye descriptor "0" nan fen script la (al gade deklarasyon "exec 0 a Nan liy lan 3yèm se dosye a opinyon asiyen nan dosye descriptor" 0, "ki itilize pou opinyon estanda. "Li" deklarasyon an Lè sa a, li yon liy soti nan dosye a sou chak iterasyon ak asiyen li nan varyab la "line1".

Nan lòd pou prematireman sòti yon ti tan-bouk, ou ka itilize deklarasyon sa a kraze tankou sa a:

konte = 1 fè = 0 pandan y ap [$ konte -le 9] fè eko "$ konte" dòmi 1 ((konte ++)) si [$ count == 5] Lè sa a, kraze fi fè eko fini

Deklarasyon an repo sote ekzekisyon pwogram nan fen a pandan y ap bouk ak ègzekutra nenpòt deklarasyon apre li. Nan ka sa a, deklarasyon an "Eko fini."

Deklarasyon an kontinye, nan lòt men an, sote sèlman rès la nan deklarasyon an bouk pandan y ap nan iterasyon aktyèl la ak sote dirèkteman nan iterasyon kap vini an:

konte = 1 fè = 0 pandan ke [$ konte -le 9] fè dòmi 1 ((konte ++)) si [$ count == 5] Lè sa a, kontinye fi eko "$ konte" fè eko fini

Nan ka sa a, "kontinye" deklarasyon an egzekite lè varyab "konte" a rive nan 5. Sa vle di deklarasyon ki vin apre a (eko "konte") pa egzekite sou iterasyon sa a (lè valè "konte" se 5).