V programovaní alebo skriptovaní je slučka jedným z najzákladnejších a najsilnejších konceptov. Smyčka vykonáva určité úlohy, kým nie sú splnené zadané podmienky. Každý programovací alebo skriptovací jazyk má rôzne spôsoby implementácie konceptu.
V tejto príručke si pozrite vnorenú slučku v skripte bash.
Vnorená slučka
Smyčka podľa definície vykonáva určité úlohy, kým nie sú splnené podmienky. Čo ak súčasťou úlohy bude spustenie slučky? Toto je koncept vnorenej slučky. Slučka v slučke.
Toto je základná štruktúra slučky.
while (podmienka)# niečo
Tu bude cyklus while pokračovať v plnení úloh deklarovaných vo vnútri bloku, pokiaľ je splnená podmienka. V prípade vnorenej slučky while by štruktúra vyzerala takto.
# hlavná slučkawhile (podmienka)
# vnorená slučka
while (podmienka)
# niečo
Teoreticky môžu vnorené slučky ísť do nekonečnej hĺbky. V mnohých situáciách môžu byť vnorené slučky dokonalým riešením.
Smyčka v bash skripte
Bash je výkonný skriptovací jazyk. V bashe sú rôzne štruktúry slučiek. Najobľúbenejšie sú slučky while, while a while. Ak ste predtým oboznámení s programovaním v C / C ++, potom bude syntax určite vyzerať dosť podobne.
Pre slučky
For loop je jedným z najbežnejších a najuniverzálnejších výstupov foriem atď. Štruktúra slučiek v skripte bash. Štruktúra sa veľmi podobá aj na slučku v C / C ++.
Štruktúra cyklu for v bashe je nasledovná.
pre ((inicializovať; podmienka; prírastok)); robiť# niečo
hotový
Štruktúra je veľmi zrejmá. Sekcia inicializácie nie je povinná. Podmienka a prírastok majú však vyššiu prioritu.
Poďme do toho. Tu je veľmi zjednodušený bash skript, ktorý sa implementuje do cyklu.
pre ((i = 0; i < 5 ; i++)); doozvena „ahoj svet“
hotový
Je tiež možné použiť zoznam / rozsah ako podmienku slučky. Je to obzvlášť užitočné pri práci so zoznamom súborov, číselnými rozsahmi, poľami, výstupmi príkazov atď. Štruktúra vyzerá asi takto.
pre položku v- ; robiť
- Bash nekonečná slučka
- Vstup používateľa skriptu Bash
- Bash funkcia vracajúce pole
# niečo
hotový
Napríklad nasledujúci skript vytlačí „ahoj svet“ päťkrát.
pre i v 1 ... 5; robiťozvena „ahoj svet“
hotový
Čo ak potrebujeme pracovať s obsahom adresára? V nasledujúcom príklade skript vytlačí všetky súbory v adresári / usr / bin.
pre i v / usr / bin / *; robiťecho $ i
hotový
Čo urobíme, aby sme mali vnorenú slučku for? Je to len jedna slučka vo vnútri druhej. Tu je vnorená slučka for pomocou predchádzajúceho príkladu.
pre ((i = 0; i < 3 ; i++)); dopre ((j = 0; j < 2 ; j++)); do
ozvena „ahoj svet“
hotový
hotový
Výstup bude šesťkrát „ahoj svet“. Vonkajšia slučka bude prebiehať trikrát, vnútorná bude prebiehať dvakrát.
Zatiaľ čo slučky
Smyčka while je ďalšia populárna a intuitívna slučka dostupná v skriptovaní bash. Syntax vyzerá takto.
zatiaľ čo# niečo
hotový
V nasledujúcom príklade skript vytlačí „ahoj svet“ päťkrát.
num = 1while [$ num -le 5]; robiť
ozvena „ahoj svet“
num = $ (($ num + 1))
hotový
Ako by to vyzeralo, keby ste mali vnorenú while slučku? Tu je jednoduchý príklad.
num_a = 1num_b = 1
while [$ num_a -le 5]; robiť
while [$ num_b -le 5]; robiť
ozvena „ahoj svet“
num_b = $ (($ num_b + 1))
hotový
num_a = $ (($ num_a + 1))
hotový
Až do slučiek
Ak máte programovacie pozadie v C / C ++, potom ste oboznámení so slučkou do-while. Bohužiaľ, bash nič také nemá. Kým však slučka nebude fungovať podobným spôsobom. Syntax tiež vyzerá celkom rovnako.
do [# niečo
hotový
Rozdiel medzi cyklom while a cyklom je podmienkou testu. Pokiaľ je testovacia podmienka pravdivá, bude chvíľu fungovať. Smyčka While však bude naďalej fungovať, iba ak je podmienka false.
Tu je rýchly príklad cyklu while. Vytlačí násobilku 2.
num_a = 1do [$ num_a -gt 10]; robiť
echo $ (($ num_a * 2))
num_a = $ (($ num_a + 1))
hotový
Prerušenie slučky
V určitých situáciách, ak sú splnené určité podmienky, sa prevádzka zvyšku slučky stane nadbytočnou. Prestávky v slučke sú zaujímavou vlastnosťou, ktorá umožňuje vybočenie zo slučky v danom stave. Pre vnorené slučky je to dôležitejšie, pretože čím vyššie sú slučky, tým vyššia je spotreba zdrojov a neefektívnosť.
Nasledujúca slučka for sa tu zastaví, keď dosiahne podmienku.
pre ((i = 1; i<=100;i++)); doecho $ i
ak [$ i-ekv. 10]; potom
prestávka
fi
hotový
Zistite, ako prerušiť slučku, aby ste získali dôkladné vysvetlenie a ukážku zlomov slučky.
Záverečné myšlienky
Vnorená slučka je jednoduchý a výkonný koncept na pochopenie a implementáciu. Dúfajme, že táto príručka dokázala popísať a demonštrovať tento koncept.
Mám záujem o ďalších sprievodcov skriptovaním pre bash? Prečítajte si nasledujúce príručky.
Šťastné výpočty!