Si të shkruani një BASH "për" Loop "

Si të përdoret loja BASH për "për" në skriptat e shell

BASH (që qëndron për Bourne Again Shell) është një gjuhë e shkruar që përdoret nga shumica e sistemeve operative Linux dhe UNIX.

Ju mund të përdorni komandat e BASH brenda një dritareje njëri pas tjetrës ose mund t'i shtoni komandat në një skedar teksti për të prodhuar një skriptë shell.

Gjëja më e mirë për të shkruar skriptet e skedarëve është që ju mund t'i përdorni ato përsëri dhe përsëri. Për shembull, imagjinoni që duhet të shtoni një përdorues në një sistem, vendosni lejet e tyre dhe menaxhoni mjedisin e tyre fillestar. Ju mund të shkruani komandat në një copë letre dhe t'i drejtoheni kur shtoni përdorues të rinj ose mund të shkruani një skriptë të vetëm dhe thjesht të kaloni parametrat në atë skriptë.

Gjuhët e shkrimit si BASH kanë konstruktime të ngjashme të programimit si gjuhë të tjera. Për shembull, mund të përdorni parametrat e importit për të marrë të dhëna nga tastiera dhe t'i ruani ato si variabla. Pastaj mund të merrni skriptin për të kryer një veprim të caktuar bazuar në vlerën e parametrave të hyrjes .

Një pjesë e rëndësishme e çdo gjuhe të programimit dhe të shkrimit është aftësia për të drejtuar të njëjtën pjesë të kodit përsëri dhe përsëri.

Ka një numër mënyrash për të përsëritur kodin (i njohur edhe si sythe). Në këtë udhëzues, do të tregoni se si të shkruani një "për" lak.

A për loop përsërit një pjesë të caktuar të kodit pa pushim. Ata janë të dobishëm në mënyrë që një seri komandash të mund të vazhdojnë të funksionojnë derisa të plotësohet një kusht i veçantë, pas të cilit ata do të ndalen.

Në këtë udhëzues, do të tregoni pesë mënyra për të përdorur loopin brenda një skede BASH.

Para fillimit

Para se të filloni me shembujt për lak, duhet të hapni një dritare terminali dhe ndiqni këto hapa:

  1. Shkruani skriptet mkdir ( mësoni më shumë rreth mkdir këtu )
  2. Futni skedarë cd (kjo ndryshon direktorinëskripte )
  3. Shkruani nano examplen.sh (ku n është shembulli në të cilin po punoni)
  4. Futni skriptin
  5. Shtypni CTRL + O për të ruajtur dhe CTRL + X për të dalë
  6. Run bash examplen.sh (përsëri, me n duke qenë shembulli me të cilin po punoni)

Si të loop përmes një listë

#! / Bin / bash
për numrin në 1 2 3 4 5
bëj
echo numër $
e bërë
dalja 0

Mënyra e BASH për të përdorur "për" sythe është disi ndryshe nga mënyra se shumica e programeve të tjera të programimit dhe gjuhëve të shkrimit trajtojnë "për" sythe. Le ta thyejmë shkrimin poshtë ...

Në një "BASH" për "loop" të gjitha, deklaratat në mes të bërë dhe të kryhen një herë për çdo artikull në listë.

Në shembullin e mësipërm, lista është gjithçka që vjen pas fjalës (dmth 1 2 3 4 5).

Çdo herë loop iterates, vlera e ardhshme në listë është futur në variablin e specifikuar pas fjalës "për" . Në ciklin e mësipërm, variabli quhet numër .

Deklarata e echo përdoret për të shfaqur informacionin në ekran.

Prandaj, ky shembull merr numrat 1 deri 5 dhe i nxjerr ato një nga një në ekran:

Si të loop mes një pikë fillimi dhe fundi

Problemi me shembullin e mësipërm është se nëse doni të përpunoni një listë më të madhe (të thuash 1 deri në 500), do të duhej që moshat të shkruanin të gjithë numrat në vendin e parë.

Kjo na sjell në shembullin e dytë që tregon si të specifikojmë një pikë fillimi dhe fundi:

#! / Bin / bash
për numrin në {1..10}
bëj
echo "numër $"
e bërë
dalja 0

Rregullat janë në thelb të njëjta. Vlerat pas fjalës " në" përbëjnë listën për të përsëritur dhe secila vlerë në listë është vendosur në variabël (p.sh. numrin), dhe çdo herë që loop iterates, deklaratat midis do dhe done kryhen.

Dallimi kryesor është mënyra e formimit të listës. Kllapat curly {} në thelb nënkuptojnë një varg, dhe diapazoni, në këtë rast, është 1 deri në 10 (dy pika ndajnë fillimin dhe fundin e një varg).

Ky shembull, pra, kalon nëpër çdo numër ndërmjet 1 dhe 10 dhe nxjerr numrin në ekran si më poshtë:

E njëjta loop mund të ishte shkruar kështu, me sintaksë identike me shembullin e parë:

për numrin në 1 2 3 4 5 6 7 8 9 10

Si të Skip Numrat në një Range

Shembulli i mëparshëm tregoi se si të hapet cikli midis një pike fillimi dhe fundi, kështu që tani do të shohim se si të kalojmë numrat në rang.

Imagjinoni që doni të bëni dallimin midis 0 dhe 100, por vetëm tregoni çdo numër të dhjetë. Skenari i mëposhtëm tregon si të bëhet pikërisht:

#! / Bin / bash
për numrin në {0..100..10}
bëj
echo "numër $"
e bërë
dalja 0

Rregullat janë në thelb të njëjta. Ekziston një listë, një ndryshore dhe një grup deklarimesh që duhet të kryhen në mes të bërë dhe bërë . Lista këtë herë duket kështu: {0..100..10}.

Numri i parë është 0 dhe numri i fundit është 100. Numri i tretë (10) është numri i artikujve në listë që do të kalojë.

Shembulli i mësipërm, pra, tregon prodhimin e mëposhtëm:

Një Më Tradicionale Duke kërkuar Për Loop

Mënyra e BASH për të shkruar për unazore është paksa e çuditshme kur krahasohet me gjuhët e tjera të programimit.

Megjithatë, mund të shkruani një për loop në një stil të ngjashëm me gjuhën e programimit C, si kjo:

#! / Bin / bash
për ((numri = 1, numri <100, numri ++))
{
nëse (($ numri% 5 == 0))
atëherë
echo "Numri $ është i ndashëm nga 5"
fi
}
dalja 0

Loop fillon duke vendosur numrin e ndryshorit në 1 (numër = 1 ). Lak do të vazhdojë iterimin ndërsa vlera e një numri është më pak se 100 ( numri <100 ). Vlera e ndryshimeve të numrit duke shtuar 1 në të pas çdo përsëritje ( numri ++ ).

Çdo gjë në mes të mbështjellësve kaçurrelë kryhet përmes secilës përsëritje të lakut.

Pak midis mbërthimeve kontrollon vlerën e një numri , e ndan atë me 5 dhe e krahason pjesën e mbetur me 0. Nëse pjesa tjetër është 0 atëherë numri është i ndashëm me 5 dhe pastaj shfaqet në ekran.

Për shembull:

Nëse dëshironi të ndryshoni madhësinë e hapit të përsëritjes, mund të ndryshoni numrin ++ në numër = numri + 2 , numri = numri + 5 , numri = numri + 10 etj.

Kjo mund të reduktohet më tej në numrin + = 2 ose numrin + = 5 .

Një shembull praktik

Për sythe mund të bëjnë më shumë se lista përsëritëse e numrave. Ju në të vërtetë mund të përdorni outputin e komandave të tjera si listë.

Shembulli i mëposhtëm tregon se si të konvertohet skedari audio nga MP3WAV :

#! / Bin / bash

Lista në këtë shembull është çdo skedar me zgjerimin .MP3 në dosjen aktuale dhe variabli është një skedar .

Komanda mpg konverton skedarin MP3 në WAV. Megjithatë, ndoshta duhet të instalosh këtë duke përdorur menaxherin e paketave të parë.