Skip to main content

Linux Shell Script Primeri BASH 'za' Loop

Anonim

BASH (ki stoji za Bourne Again Shell) je skriptni jezik, ki ga uporablja večina operacijskih sistemov na osnovi Linuxa in UNIX.

Bojne ukaze lahko zaženete v oknu terminala eno za drugim ali pa lahko dodate ukaze v besedilno datoteko, da izdelate skripto lupine.

Odlična stvar pri pisanju lupinskih skriptov je, da jih lahko vedno znova zaženete. Predstavljajte si, na primer, da morate dodati uporabnika v sistem, nastaviti njihova dovoljenja in upravljati svoje začetno okolje. Lahko zapišete ukaze na kos papirja in jih zaženete, ko dodate nove uporabnike, ali pa lahko napišete en sam skript in preprosto prenesete parametre v ta skript.

Skriptni jeziki, kot je BASH, imajo podobne programske konstrukte kot drugi jeziki. Na primer, parametre uvoza lahko uporabite za vnos iz tipkovnice in jih shranite kot spremenljivke. Skript lahko nato izvedete za izvedbo določenega dejanja, ki temelji na vrednosti vhodnih parametrov.

Ključni del katerega koli programskega in skriptnega jezika je zmožnost ponovnega zagona enake kode kode.

Obstaja več načinov ponovitve kode (znane tudi kot zanke). V tem vodniku vam bo prikazano, kako napisati "za" zanko.

A za zanke ponovi določen del kode znova in več. Uporabni so tako, da se lahko zaporedje ukazov nadaljuje, dokler ni izpolnjen določen pogoj, po katerem se bodo ustavili.

V tem vodniku vam bo prikazan pet načinov za uporabo zanke za v BASH skriptu.

Pred začetkom

Preden začnete uporabljati primere za zanke, morate odpreti okno terminala in sledite tem korakom:

  1. Vnesite skripti mkdir (več informacij o mkdirju tukaj).

  2. Vnesite cd skripte (to spremeni imenik v skripte ).

  3. Vnesite nano examplen.sh (kje n je primer, na katerem delate).

  4. Vnesite skript.

  5. Pritisnite CTRL + O shraniti in CTRL + X za izhod.

  6. Run bash examplen.sh (spet, z n kot primer, s katerim delate).

Kako prelistati seznam

Številka #! / bin / bashfor v 1 2 3 4 5doecho $ numberdoneexit 0

Način BASH z uporabo "za" zanke je nekoliko drugačen od načina, kako večina drugih programskih in skriptnih jezikov obravnava "za" zank. Razbijmo skript.

V BASH "za" zanko vse, izjave med storiti in Končano se izvedejo enkrat za vsak element na seznamu.

V zgornjem primeru je seznam vse, kar pride po besedo v (to je 1 2 3 4 5).

Vsakič, ko zanke ponovi, se naslednja vrednost na seznamu vstavi v spremenljivko, določeno za besedo "za" . V zgornji zanki se kliče spremenljivka številka .

Eho izjava se uporablja za prikaz informacij na zaslonu.

Zato ta primer vzame številke od 1 do 5 in jih izenači na zaslonu:

  • 1
  • 2
  • 3
  • 4
  • 5

Kako zanko med začetno in končno točko

Težava z zgornjim primerom je, da če želite obdelati večji seznam (recimo 1 do 500), bi bilo potrebno starost, da vnesete vse številke na prvem mestu.

To nas pripelje na drugi primer, ki prikazuje, kako določiti začetno in končno točko:

#! / bin / bashfor številka v {1..10} doecho "$ number" doneexit 0

Pravila so v bistvu enaka. Vrednosti za besedo " v " sestavljajo seznam za ponovitev in vsaka vrednost na seznamu je nameščena v spremenljivki (to je številka) in vsakič, ko zanke ponovi, se izjave med storiti in Končano se izvajajo.

Glavna razlika je, kako se oblikuje seznam. Vpni nosilci {} v bistvu označujejo obseg in obseg je v tem primeru od 1 do 10 (dve piki ločita začetek in konec območja).

Ta primer torej poteka skozi vsako število med 1 in 10 in številko prikaže na zaslonu, kot sledi:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Ista zanka bi lahko bila napisana tako, s sintakso, ki je enaka prvemu primeru:

za število v 1 2 3 4 5 6 7 8 9 10

Kako preskočiti številke v območju

Prejšnji primer je pokazal, kako se zanima med začetno in končno točko, zato si zdaj preučimo, kako preskočiti številke v območju.

Predstavljajte si, da želite zanko med 0 in 100, vendar samo prikazati vsako desetino številko. Naslednji skript kaže, kako narediti ravno to:

#! / bin / bashfor številka v {0..100..10} doecho "$ number" doneexit 0

Pravila so v bistvu enaka. Obstaja seznam, spremenljivka in niz stavkov, ki jih je treba izvesti med storiti in Končano . Seznam tokrat izgleda takole: {0..100..10}.

Prva številka je 0 in številka konca je 100. Tretja številka (10) je število elementov na seznamu, ki jih bo preskočil.

Zgornji primer torej prikazuje naslednji izhod:

  • 0
  • 10
  • 20
  • 30
  • 40
  • 50
  • 60
  • 70
  • 80
  • 90
  • 100

Bolj tradicionalno iskanje zanke

BASH način pisanja za zanke je nekoliko čuden v primerjavi z drugimi programskimi jeziki.

Lahko pa napišete zanko v podobnem slogu kot programski jezik C, kot je ta:

#! / bin / bashfor ((številka = 1; številka <100; številka ++)) {if (($ število% 5 == 0)) thenecho "$ število je deljivo s 5" fi} izhod 0

Zanka se začne z nastavitvijo številke spremenljivke na 1 (številka = 1 ). Zanka se bo ponovila, medtem ko je vrednost števila manj kot 100 ( številka <100 ). Vrednost številka spremembe z dodajanjem 1 po vsaki ponovitvi ( številka ++ ).

Vse med zavihanimi oporniki se izvaja skozi vsako ponovitev zanke.

Bit med zavitki preveri vrednost a številka , ga deli s 5 in primerja preostanek na 0. Če je preostanek 0, potem je število deljivo s 5 in se nato prikaže na zaslonu.

Na primer:

  • 5 je deljivo s 5
  • 10 je deljivo s 5
  • 15 je deljivo s 5

Če želite spremeniti velikost koraka ponovitve, lahko spremenite razdelek številka ++ številka = številka + 2 , številka = številka + 5 , ali številka = številka + 10 itd.

To je mogoče še dodatno zmanjšati številka + = 2 ali številka + = 5 .

Praktični primer

Za zanke lahko naredite več kot ponovite sezname številk. Lahko dejansko uporabite izhod drugih ukazov kot seznam.

Naslednji primer prikazuje pretvorbo zvočnih datotek iz MP3 v WAV:

#! / bin / bashza datoteko v ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" done

Seznam v tem primeru je vsaka datoteka z razširitvijo .MP3 v trenutni mapi in spremenljivka je mapa .

The mpg ukaz pretvori datoteko MP3 v WAV. Vendar pa boste verjetno morali to najprej namestiti z upraviteljem paketa.