Skip to main content

Shell Script Primjeri ABH za 'Loop'

PHP Syntax (Travanj 2025)

PHP Syntax (Travanj 2025)
Anonim

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.

za petlja opet ponavlja i 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. Unesi mkdir skripte (ovdje saznajte više o mkdiru).

  2. Unesi cd skripti (ovo mijenja direktorij u skripta ).

  3. Unesi nano examplen.sh (gdje n primjer na kojem radite).

  4. Unesite skriptu.

  5. tisak Ctrl + O za spremanje i CTRL + X izaći.

  6. Trčanje bash examplen.sh (opet, s n kao primjer na kojem radite).

Kako zaobići popis

#! / bin / bashfor broj u 1 2 3 4 5doecho $ numberdoneexit 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" sve petlje, izjave između čini i učinio se izvršavaju jednom za svaku stavku na popisu.

U gore navedenom primjeru, popis je sve što dolazi nakon riječi u (tj. 1 2 3 4 5).

Svaki put kad iteratska petlja, sljedeća vrijednost na popisu umetnuta je u varijablu navedenu nakon riječi "za" , U gornjoj petlji se poziva varijabla 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 / bashfor broj u {1..10} doecho "$ number" doneexit 0

Pravila su u osnovi ista. Vrijednosti nakon riječi " u" popuniti popis za iteriranje kroz i svaku vrijednost na popisu je smještena u varijablu (tj. broj), i svaki put kada se petlja iterates, izjave između čini i učinio su izvedeni.

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 / bashfor broj u {0..100..10} doecho "$ number" doneexit 0

Pravila su u osnovi ista. Postoji popis, varijabla i skup izjava koje treba izvršiti između čini i učinio , 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 / bashfor ((broj = 1; broj <100; broj ++)) {if (($ number% 5 == 0)) thenecho "$ broj je djeljiv sa 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 broj promjene nakon dodavanja 1 nakon svake iteracije ( broj ++ ).

Sve između kovrčastih zavoja izvodi se kroz svaku iteraciju petlje.

Bit između braces provjerava vrijednost a broj , dijeli ga za 5 i uspoređuje ostatak s 0. Ako je ostatak 0, tada je broj djeljiv sa 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 izmijeniti dio s brojem ++ koji će biti broj = broj + 2 , broj = broj + 5 , ili 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 / bashza datoteku u ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" učinjeno

Popis u ovom primjeru je svaka datoteka s nastavkom .MP3 u trenutnoj mapi i varijabla je a datoteka .

mpg naredba pretvara MP3 datoteku u WAV. Međutim, vjerojatno je ovo potrebno najprije instalirati pomoću upravitelja paketa.