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:
- Zadajte skripty mkdir ( viac informácií o mkdir tu )
- Zadajte cd skripty (toto mení adresár na skripty )
- Zadajte nano examplen.sh (kde n je príklad, na ktorom pracujete)
- Zadajte skript
- Stlačte CTRL + O na uloženie a CTRL + X ukončíte
- 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:
- 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 / 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:
- 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 / 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:
- 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 / 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:
- 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ť čí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.