Kako koristiti ABH "za" petlju u shell skripte
BASH (što znači Bourne Again Shell) je skriptni jezik koji koristi većina Linux i UNIX operacijskih sustava.
Možete izvršiti naredbe BASH unutar prozora terminala jedna za drugom ili možete dodati naredbe u tekstnu datoteku kako biste stvorili skriptu ljuske.
Velika stvar o pisanju skriptnih skripti jest da ih možete ponovo i ponovo pokrenuti. Na primjer, zamislite da morate dodati korisnika u sustav, postaviti dopuštenja i upravljati početnim okruženjem. Možete zapisati naredbe na komad papira i pokrenuti ih dok dodate nove korisnike ili možete napisati jednu skriptu i samo prenijeti parametre u tu skriptu.
Skriptni jezici kao što je BASH imaju slične programske konstrukcije kao i drugi jezici. Na primjer, možete upotrijebiti parametre uvoza da biste dobili podatke s tipkovnice i pohranili ih kao varijable. Zatim skriptu možete izvršiti za određenu radnju na temelju vrijednosti ulaznih parametara .
Ključni dio bilo kojeg programa i skriptnog jezika je sposobnost pokretanja istog dijela koda opet i ponovo.
Postoji nekoliko načina ponavljanja koda (također poznatog kao petlje). U ovom vodiču bit će vam prikazano kako napisati "za" petlju.
A za petlju ponavlja se određeni dio koda. Korisni su tako da se niz naredbi može nastaviti raditi sve dok se ne zadovolji određeni uvjet, nakon čega će prestati.
U ovom vodiču bit će prikazano pet načina korištenja za petlju unutar BASH skripte.
Prije početka rada
Prije nego što započnete sa primjerima za petlje, trebate otvoriti prozor terminala i slijedite ove korake:
- Unesite mkdir skripte ( saznajte više o mkdir ovdje )
- Unesite CD skripte (ovo mijenja direktorij u skripte )
- Unesite nano examplen.sh (gdje je n primjer na kojem radite)
- Unesite skriptu
- Pritisnite CTRL + O za spremanje i CTRL + X za izlaz
- Pokrenite bash examplen.sh (opet, pri čemu n primjenjujete primjer na koji radite)
Kako zaobići popis
#! / Bin / bash
za broj u 1 2 3 4 5
čini
echo $ broj
učinio
izlaz 0
BASH način korištenja "for" petlje je nešto drugačiji od načina na koji većina drugih programskih i skriptnih jezika upravlja "za" petlje. Razbijmo scenarij dolje ...
U ABH "za" petlju sve, izjave između do i učinjeno se obavljaju jednom za svaku stavku na popisu.
U gornjem primjeru, popis je sve što dolazi nakon riječi u (tj. 1 2 3 4 5).
Svaki put kada se petlja ponavlja, sljedeća vrijednost na popisu umetnuta je u varijablu navedenu nakon riječi "za" . U gornjoj petlji, varijabla se naziva broj .
Echo izjava se koristi za prikazane informacije na zaslonu.
Dakle, ovaj primjer preuzima brojeve od 1 do 5 i izlazi jedan po jedan na zaslon:
- 1
- 2
- 3
- 4
- 5
Kako točkati između početne i krajnje točke
Problem s gore navedenim primjerom je taj da ako želite obraditi veći popis (recimo 1 do 500), bilo bi potrebno dobi za upisivanje svih brojeva na prvo mjesto.
Ovo nas dovodi do drugog primjera koji pokazuje kako odrediti početnu i završnu točku:
#! / Bin / bash
za broj u {1..10}
čini
echo "$ number"
učinio
izlaz 0
Pravila su u osnovi ista. Vrijednosti nakon riječi " u" čine popis za iteriranje, a svaka vrijednost na popisu je postavljena u varijablu (tj. Broj), a svaki put kada se petlja ponavlja, izvodi se između do i učinjeno .
Glavna razlika je način na koji se taj popis formira. Urezane zagrade {} u osnovi označavaju raspon, a raspon, u ovom slučaju, iznosi 1 do 10 (dvije točke razdvajaju početak i kraj raspona).
Ovaj primjer, dakle, prolazi kroz svaki broj između 1 i 10 i izlazi broj na zaslonu kako slijedi:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Ista se petlja mogla napisati ovako, s sintaksom koja je identična prvome primjeru:
za broj u 1 2 3 4 5 6 7 8 9 10
Kako preskočiti brojeve u rasponu
Prethodni primjer pokazao je način petlje između početne i završne točke, pa ćemo sada pogledati kako preskočiti brojeve u rasponu.
Zamislite da želite petlju između 0 i 100, ali samo prikazati svaki deseti broj. Sljedeća skripta pokazuje kako to učiniti upravo to:
#! / Bin / bash
za broj u {0..100..10}
čini
echo "$ number"
učinio
izlaz 0
Pravila su u osnovi ista. Postoji popis, varijabla i skup izjava koje treba izvršiti između do i učinjeno . Popis ovaj put izgleda ovako: {0..100..10}.
Prvi broj je 0, a krajnji broj je 100. Treći broj (10) predstavlja broj stavki na popisu koji će preskočiti.
Gornji primjer stoga prikazuje sljedeći izlaz:
- 0
- 10
- 20
- 30
- 40
- 50
- 60
- 70
- 80
- 90
- 100
Tradicionalnija traži petlje
BASH način pisanja za petlje malo je čudan u usporedbi s drugim programskim jezicima.
Možete, međutim, napisati petlju u obliku sličnog stilu C programskog jezika, kao što je ovaj:
#! / Bin / bash
za ((broj = 1, broj <100, broj ++))
{
ako (($ broj% 5 == 0))
zatim
echo "$ broj je djeljiv po 5"
fi
}
izlaz 0
Petlja počinje postavljanjem varijable broja na 1 (broj = 1 ). Petlja će zadržati iteraciju dok vrijednost broja nije manja od 100 ( broj <100 ). Vrijednost broja mijenja se dodavanjem 1 za svaku iteraciju ( broj ++ ).
Sve između kovrčastih zavoja izvodi se kroz svaku iteraciju petlje.
Bit između braces provjerava vrijednost broja , dijeli ga za 5 i uspoređuje ostatak sa 0. Ako je ostatak 0, tada je broj djeljiv po 5, a zatim se prikazuje na zaslonu.
Na primjer:
- 5 je djeljiv sa 5
- 10 je djeljiv sa 5
- 15 je djeljiv sa 5
Ako želite promijeniti veličinu koraka iteracije, možete promijeniti brojčani odjeljak ++ za broj = broj + 2 , broj = broj + 5 , broj = broj + 10 itd.
To se može dodatno svesti na broj + = 2 ili broj + = 5 .
Praktični primjer
Jer petlje mogu učiniti više od ponavljanja popisa brojeva. Možete zapravo koristiti izlaz drugih naredbi kao popis.
Sljedeći primjer pokazuje kako pretvoriti audio datoteke iz MP3 u WAV :
#! / Bin / bash
Popis u ovom primjeru je svaka datoteka s nastavkom .MP3 u trenutnoj mapi, a varijabla je datoteka .
Mpg naredba pretvara MP3 datoteku u WAV. Međutim, vjerojatno je ovo potrebno najprije instalirati pomoću upravitelja paketa.