Kijan Pou Ekri yon BASH "pou" Loop

Ki jan yo itilize BASH "pou" riban nan Scripts koki

BASH (ki vle di Bourne ankò Shell) se yon lang scripting itilize pa pi Linux ak UNIX ki baze sou sistèm opere.

Ou ka kouri lòd BASH nan yon fenèt tèminal youn apre lòt la oswa ou ka ajoute kòmandman yo nan yon dosye tèks yo pwodwi yon script koki.

Bagay la gwo sou Scripts koki ekri se ke ou ka kouri yo ankò e ankò. Pou egzanp imajine ou bezwen ajoute yon itilizatè nan yon sistèm, mete autorisations yo ak jere anviwònman kòmanse yo. Ou ka swa ekri kòmandman yo sou yon moso papye epi kouri yo jan ou ajoute itilizatè nouvo oswa ou ka ekri yon script sèl ak jis pase paramèt nan ki script.

Langaj ekriti tankou BASH gen menm pwogram konstwi tankou lòt lang. Pou egzanp, ou ka itilize paramèt enpòte jwenn opinyon soti nan klavye a epi estoke yo kòm varyab. Ou ka Lè sa a, jwenn script la fè yon aksyon sèten ki baze sou valè a nan paramèt yo opinyon .

Yon pati enpòtan nan nenpòt pwogram ak lang scripting se kapasite nan kouri menm moso kòd la ankò e ankò.

Genyen yon kantite fason yo repete kòd (ke yo rele tou pasan). Nan gid sa a, ou pral montre ki jan yo ekri yon "pou" riban.

Yon pou riban repete yon seksyon sèten nan kòd la sou yo ak sou. Yo ap itil pou ke yon seri de kòmandman ka kenbe kouri jiskaske yon kondisyon an patikilye satisfè, apre yo fin ki yo pral sispann.

Nan gid sa a, ou pral montre senk fason yo itilize riban an nan yon script BASH.

Anvan Pou kòmanse

Anvan ou kòmanse ak egzanp pou bouk yo, ou bezwen louvri yon fenèt tèminal epi swiv etap sa yo:

  1. Antre nan Scripts mkdir ( aprann plis sou mkdir isit la )
  2. Antre nan Scripts Cd (sa a chanje anyè a Scripts )
  3. Mete nanan examplen.sh (kote n se egzanp ou ap travay sou)
  4. Antre nan script la
  5. Press CTRL + O pou sove ak CTRL + X pou sòti
  6. Kouri bash examplen.sh (ankò, ak n ke yo te egzanp lan w ap travay avèk)

Ki jan yo bouk Atravè yon lis

#! / bin / bash
pou nimewo nan 1 2 3 4 5

eko $ nimewo

Sòti 0

BAS fason pou yo itilize "pou" pasan se yon ti jan diferan nan fason ki pi lòt pwogram ak lang scripting okipe "pou" pasan. Ann kraze script la desann ...

Nan yon BASH "pou" bouk tout, deklarasyon ki genyen ant ak yo fèt yon fwa pou chak atik nan lis la.

Nan egzanp ki anwo a, lis la se tout bagay ki vini apre mo a nan (sa vle di 1 2 3 4 5).

Chak fwa ribrik a iterates, valè a pwochen nan lis la se eleman nan varyab la espesifye apre mo "pou" la . Nan riban ki anwo a, varyab la rele nimewo .

Se deklarasyon nan eko itilize yo parèt enfòmasyon sou ekran an.

Se poutèt sa, egzanp sa a pran chif 1 a 5 epi rann yo youn pa youn nan ekran an:

Ki jan yo boukant ant yon kòmanse ak pwen final la

Pwoblèm nan ak egzanp ki anwo a se ke si ou vle travay sou yon lis pi gwo (di 1 a 500), li ta pran laj nan tape tout nimewo yo an plas an premye.

Sa a pote nou nan dezyèm egzanp lan ki montre kouman yo presize yon kòmansman ak pwen fen:

#! / bin / bash
pou nimewo nan {1..10}

eko "$ nimewo"

Sòti 0

Règ yo se fondamantalman menm bagay la. Valè yo apre mo " nan" fè lis la nan iterere nan epi yo chak valè nan lis la mete yo nan varyab la (sètadi nimewo), ak chak fwa bouk la iterates, deklarasyon sa yo ant ak yo fèt.

Diferans prensipal la se wout la se lis la ki te fòme. Parantèz yo Curly {} fondamantalman vle di yon seri, ak ranje a, nan ka sa a, se 1 a 10 (de pwen yo separe nan kòmansman ak nan fen yon ranje).

Egzanp sa a, Se poutèt sa, kouri nan chak nimewo ant 1 ak 10 epi li bay nimewo a ekran an jan sa a:

Te ka bouk la menm te ekri tankou sa a, ak sentaks ki idantik ak premye egzanp lan:

pou nimewo nan 1 2 3 4 5 6 7 8 9 10

Ki jan yo Sote Numbers nan yon ranje

Egzanp anvan an te montre kouman pou riban ant yon kòmansman ak fen pwen, se konsa kounye a nou pral gade nan ki jan yo sote nimewo nan seri a.

Imajine ou vle riban ant 0 ak 100, men sèlman montre chak nimewo dizyèm. Script sa a montre kouman fè sèlman sa:

#! / bin / bash
pou nimewo nan {0..100..10}

eko "$ nimewo"

Sòti 0

Règ yo se fondamantalman menm bagay la. Gen yon lis, yon varyab, ak yon seri deklarasyon ki dwe fèt ant ak . Lis sa a tan sanble sa a: {0..100..10}.

Premye nimewo a se 0 ak nimewo fen a se 100. Twazyèm nimewo a (10) se kantite atik nan lis la ke li pral sote.

Egzanp ki anwo a, Se poutèt sa, montre pwodiksyon sa a:

Yon plis tradisyonèl kap chèche bouk

BASH fason pou ekri pou pasan se yon ti kras etranjè lè yo konpare ak lòt lang programmation.

Ou ka, sepandan, ekri yon pou bouk nan yon style menm jan ak lang nan C pwogram, tankou sa a:

#! / bin / bash
pou ((nimewo = 1; nimewo <100; nimewo ++))
{
si (($ nimewo 5 == 0))
lè sa a
eko "nimewo $ se divizib pa 5"
fi
}}
Sòti 0

Règ la kòmanse pa mete nimewo a varyab nan 1 (nimewo = 1 ). Riban an ap kontinye iterasyon tou ke valè yon nimewo gen mwens pase 100 ( nimewo <100 ). Valè a nan chanjman nimewo pa ajoute 1 nan li apre chak iterasyon ( nimewo ++ ).

Tout ant aparèy òtopedik Curly yo fèt nan chak iterasyon nan bouk la.

Ti jan ant aparèy chèk yo verifye valè yon nimewo , divize li pa 5, epi konpare rès la a 0. Si rès la se 0 Lè sa a, nimewo a se divizib pa 5 epi li se Lè sa a, parèt sou ekran an.

Pa egzanp:

Si ou vle chanje gwosè a etap nan iterasyon a ou ka chanje nimewo seksyon sa a + yo dwe nimewo = nimewo + 2 , nimewo = nimewo + 5 , oswa nimewo = nimewo + 10 elatriye.

Sa a ka plis redwi a nimewo + = 2 oswa nimewo + = 5 .

Yon egzanp pratik

Pou pasan ka fè plis pase lis iterate nan nimewo yo. Ou ka aktyèlman itilize pwodiksyon an nan lòt kòmandman kòm lis la.

Egzanp sa a montre kijan pou konvèti dosye odyo soti nan MP3 WAV :

#! / bin / bash

Lis la nan egzanp sa a se chak dosye ak ekstansyon an .MP3 nan katab aktyèl la ak varyab la se yon dosye .

Kòmandman mpg la konvèti dosye MP3 a nan WAV. Sepandan, ou pwobableman bezwen enstale sa a lè l sèvi avèk manadjè pake ou an premye.