Ako napísať bash "pre" slučku

Ako používať slučku BASH "pre" v skriptoch shell

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".

Reťazec A for 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. Zadajte skripty mkdir ( viac informácií o mkdir tu )
  2. Zadajte cd skripty (toto mení adresár na skripty )
  3. Zadajte nano examplen.sh (kde n je príklad, na ktorom pracujete)
  4. Zadajte skript
  5. Stlačte CTRL + O na uloženie a CTRL + X ukončíte
  6. Spustite bash examplen.sh (znova, pričom n je príklad, s ktorým pracujete)

Ako načrtnúť zoznam

#! / Bin / bash
pre číslo v 1 2 3 4 5
robiť
echo $ číslo
hotový
opustiť 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". Poďme si rozdeliť skript ...

V záhlaví BASH "pre" všetko sa pre každú položku v zozname vykonajú príkazy medzi vykonaním a vykonaním .

Vo vyššie uvedenom príklade je zoznam všetko, čo príde po slove v (tj 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 "pre" . Vo vyššie uvedenej smyčke sa premenná nazýva čí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:

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 / bash
pre číslo v {1..10}
robiť
echo "$ number"
hotový
opustiť 0

Pravidlá sú v podstate rovnaké. Hodnoty za slovom " in" tvoria zoznam pre opakovanie a každá hodnota v zozname je umiestnená v premennej (tj číslo) a pri každom opakovaní cyklu sa vykonajú príkazy medzi vykonaním a ukončením.

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:

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 / bash
pre číslo v {0..100..10}
robiť
echo "$ number"
hotový
opustiť 0

Pravidlá sú v podstate rovnaké. Existuje zoznam, premenná a množina výkazov, ktoré sa majú vykonať medzi vykonaním a vykonaním . 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:

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 / bash
pre ((číslo = 1, číslo <100, číslo ++))
{
ak (($ číslo% 5 == 0))
potom
echo "$ číslo je deliteľné o 5"
fi
}
opustiť 0

Smyčka začína nastavením čísla premennej na hodnotu 1 (číslo = 1 ). Slučka zachová iteráciu, pričom hodnota čísla je nižšia ako 100 ( číslo <100 ). Hodnota čísiel sa zmení pridaním 1 po každej iteracii ( číslo ++ ).

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

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

Napríklad:

Ak chcete zmeniť veľkosť kroku iterácie, môžete zmeniť číslicovú sekciu čí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 / bash

Zoznam v tomto príklade je každý súbor s príponou .MP3 v aktuálnej zložke a premenná je súbor .

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