Programovanie v jazyku BASH

Vnorená slučka v príkladoch skriptu Bash

Vnorená slučka v príkladoch skriptu Bash

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čka
while (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++)); do
ozvena „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ť
# 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++)); do
pre ((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 ; robiť
# niečo
hotový

V nasledujúcom príklade skript vytlačí „ahoj svet“ päťkrát.

num = 1
while [$ 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 = 1
num_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 [ ]; robiť
# 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 = 1
do [$ 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++)); do
echo $ 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.

  • Bash nekonečná slučka
  • Vstup používateľa skriptu Bash
  • Bash funkcia vracajúce pole

Šťastné výpočty!

Hry Top 10 hier, ktoré sa dajú hrať na Ubuntu
Top 10 hier, ktoré sa dajú hrať na Ubuntu
Platforma Windows je jednou z dominujúcich platforiem pre hry kvôli obrovskému percentu hier, ktoré sa dnes vyvíjajú na natívnu podporu systému Window...
Hry 5 najlepších arkádových hier pre Linux
5 najlepších arkádových hier pre Linux
V dnešnej dobe sú počítače vážne stroje používané na hranie hier. Ak nemôžete dosiahnuť nové najvyššie skóre, budete vedieť, čo tým myslím. V tomto pr...
Hry Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 vydané minulý mesiac, je šiestym vývojovým vydaním v 1.13.séria x a prináša množstvo vylepšení, najmä používateľského rozhra...