Kako napisati BASH "za" Loop "

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:

  1. Unesite mkdir skripte ( saznajte više o mkdir ovdje )
  2. Unesite CD skripte (ovo mijenja direktorij u skripte )
  3. Unesite nano examplen.sh (gdje je n primjer na kojem radite)
  4. Unesite skriptu
  5. Pritisnite CTRL + O za spremanje i CTRL + X za izlaz
  6. 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:

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:

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:

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:

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.