Skip to main content

Linux Shell Script Príklady slučky BASH 'for'

Anonim

BASH (čo znamená Bourne Again Shell) je skriptovací jazyk používaný väčšinou operačného systému Linux a UNIX.

Môžete spustiť BASH príkazy v okne terminálu jeden po druhom alebo môžete pridať príkazy do textového súboru vytvoriť skript shell.

Skvelá vec pri písaní shell skriptov je, že ich môžete spustiť znova a znova. Predstavte si napríklad, že potrebujete pridať používateľa do systému, nastaviť jeho oprávnenia a spravovať jeho štartovacie prostredie. Môžete buď napísať príkazy na kus papiera a spustiť ich pri pridávaní nových používateľov, alebo môžete napísať jediný skript a len prejsť parametre do tohto skriptu.

Skriptovacie jazyky, ako napríklad BASH, majú podobné programovacie konštrukcie ako ostatné jazyky. Napríklad môžete použiť parametre importu, aby ste získali vstup z klávesnice a uložili ich ako premenné. Potom môžete skript vykonať určitú akciu založenú na hodnote vstupných parametrov.

Kľúčovou súčasťou každého programovacieho a skriptovacieho jazyka je schopnosť opakovane spustiť rovnaký kód.

Existuje niekoľko spôsobov, ako opakovať kód (tiež známy ako slučky). V tejto príručke sa zobrazí, ako napísať cyklus "pre".

pre slučka opakuje určitú časť kódu znova a znova. Sú užitočné, aby mohla zostať spustená séria príkazov, kým nie je splnená konkrétna podmienka, a potom sa zastavia.

V tejto príručke sa vám ukáže päť spôsobov, ako použiť slučku for v rámci skriptu BASH.

Skôr ako začnete

Skôr ako začnete s príkladmi slučky for, musíte otvoriť okno terminálu a postupujte podľa týchto krokov:

  1. vstúpiť mkdir skripty (dozviete sa viac o mkdir tu).

  2. vstúpiť cd skripty (zmena adresára na skripty ).

  3. vstúpiť nano examplen.sh (kde n je príklad, na ktorom pracujete).

  4. Zadajte skript.

  5. lis CTRL + O uložiť a CTRL + X k východu.

  6. beh bash examplen.sh (opäť s n ako príklad, s ktorým pracujete).

Ako načrtnúť zoznam

#! / bin / bashfor číslo v 1 2 3 4 5doecho $ numberdoneexit 0

Metóda BASH používania slučiek "for" sa trochu líši od spôsobu, akým väčšina iných programovacích a skriptovacích jazykov spracováva slučky "za". Skúsme skript.

V BASH "pre" slučku všetky, vyhlásenia medzi robiť a hotový sa vykonávajú raz pre každú položku v zozname.

Vo vyššie uvedenom príklade je zoznam všetko, čo príde po slove v (t.j. 1 2 3 4 5).

Zakaždým, keď sa slučka opakuje, nasledujúca hodnota v zozname sa vloží do premennej zadanej za slovom "K" , Vo vyššie uvedenej smyčke sa nazýva premenná číslo .

Označenie echo sa používa na zobrazenie informácií na obrazovke.

Preto tento príklad má čísla 1 až 5 a ich výstupy jeden po druhom na obrazovku:

  • 1
  • 2
  • 3
  • 4
  • 5

Ako načrtnúť medzi začiatkom a koncom

Problém s vyššie uvedeným príkladom spočíva v tom, že ak chcete spracovať väčší zoznam (napríklad 1 až 500), bolo by vek, keby ste najskôr napísali všetky čísla.

To nás privádza k druhému príkladu, ktorý ukazuje, ako určiť začiatočný a koncový bod:

#! / bin / bashfor číslo v {1..10} doecho "$ number" doneexit 0

Pravidlá sú v podstate rovnaké. Hodnoty za slovom " v " vytvorte zoznam pre opakovanie a každá hodnota v zozname je umiestnená v premennej (t.j. číslo) a pokaždé, keď sa slučka opakuje, príkazy medzi robiť a hotový sú vykonávané.

Hlavným rozdielom je spôsob vytvárania zoznamu. Zakrivené zátvorky {} v podstate označujú rozsah a rozsah je v tomto prípade 1 až 10 (dve bodky oddeľujú začiatok a koniec rozsahu).

Tento príklad preto prechádza každým číslom medzi 1 a 10 a vyvedie číslo na obrazovku nasledovne:

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

Tá istá slučka by mohla byť napísaná takto, so syntaxou identickou s prvým príkladom:

pre číslo v 1 2 3 4 5 6 7 8 9 10

Ako preskočiť čísla v rozsahu

Predchádzajúci príklad ukázal, ako smyčka medzi začiatočným a koncovým bodom, a teraz sa pozrieme na to, ako preskočiť čísla v rozsahu.

Predstavte si, že chcete vytvoriť slučku medzi 0 a 100, ale zobrazovať iba každé desiate číslo. Nasledujúci skript ukazuje, ako to urobiť práve takto:

#! / bin / bashfor číslo v {0..100..10} doecho "$ number" doneexit 0

Pravidlá sú v podstate rovnaké. K dispozícii je zoznam, premenná a množina výkazov, ktoré sa majú vykonať medzi robiť a hotový , Tento zoznam vyzerá takto: {0..100..10}.

Prvé číslo je 0 a koncové číslo je 100. Tretie číslo (10) je počet položiek v zozname, ktoré preskočí.

Vyššie uvedený príklad preto zobrazuje nasledujúci výstup:

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

Viac tradičné hľadanie slučky

Spôsob písania jazyka BASH pre slučky je trochu zvláštny v porovnaní s inými programovacími jazykmi.

Môžete napriek tomu napísať slučku v podobnom štýle ako programovací jazyk C, napríklad:

# {bin / bashfor ((číslo = 1; číslo <100; číslo ++)) {if (($ číslo% 5 == 0)) thenecho "$ číslo je deliteľné 5"

Cyklus začína nastavením premenného čísla na hodnotu 1 (číslo = 1 ). Slučka zachová iteráciu, pričom hodnota čísla je nižšia ako 100 ( číslo <100 ). Hodnota číslo zmeny po pridaní 1 po každej iterácii ( číslo ++ ).

Všetko medzi kliešťami sa uskutočňuje prostredníctvom každej iteračnej cykly.

Bit medzi výstupkami kontroluje hodnotu a číslo , rozdeľuje ho o 5 a porovnáva zvyšok s číslom 0. Ak je zvyšok 0, číslo je deliteľné 5 a potom sa zobrazí na obrazovke.

Napríklad:

  • 5 je deliteľná 5
  • 10 je deliteľná 5
  • 15 je deliteľná 5

Ak chcete zmeniť veľkosť kroku iterácie, môžete zmeniť číslo sekcie ++ číslo = číslo + 2 , číslo = číslo + 5 , alebo číslo = číslo + 10 atď.

To možno ďalej redukovať na číslo + = 2 alebo číslo + = 5 .

Praktický príklad

Pre slučky môže robiť viac ako opakovať zoznam čísel. Môžete skutočne použiť výstup iných príkazov ako zoznam.

Nasledujúci príklad ukazuje, ako previesť zvukové súbory z formátu MP3 do formátu WAV:

#! / Bin / bashpre súbor vo formáte ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" hotovo

Zoznam v tomto príklade je každý súbor s príponou .MP3 v aktuálnom priečinku a premenná je a súbor .

mpg príkaz konvertuje súbor MP3 do formátu WAV. Pravdepodobne musíte najprv nainštalovať program pomocou správcu balíkov.