5 užitočných bash pre príklady slučiek

Predstavte si, že máte adresár naplnený tisíckami súborov a boli ste požiadaní o spracovanie týchto súborov jeden po druhom. Znie to dosť zdĺhavo, však? No nie, ak používate slučky For v skripte Bash. Slučka For v bash skripte je magický nástroj, ktorý vám môže pomôcť zautomatizovať akúkoľvek opakujúcu sa úlohu a zároveň efektívne narábať s týmito súbormi bez toho, aby ste sa museli zapotiť. V tomto článku diskutujeme o tom, čo sú slučky for bash, s niekoľkými praktickými príkladmi, vďaka ktorým bude automatizácia hračkou.

Obsah

What is For Loop v Bash Scripte

Slučka For je riadiaca štruktúra, ktorá sa používa na vykonávanie opakujúcich sa úloh alebo na vykonávanie množstva príkazov v určitom počte opakovaní. Pomocou cyklu for môžete prechádzať číslami, zoznamami, súbormi alebo dokonca adresármi.

Bash For Loop: Syntax štýlu POSIX

Syntax štýlu POSIX (Portable Operating System Interface) možno použiť s shellmi kompatibilnými s POSIX ako bash a dá sa použiť na iteráciu zoznamu súborov, ľubovoľnej sekvencie alebo dokonca výstupu iných príkazy. Tu je syntax cyklu for v skripte bash:

for  in 
do 
done. 

Vo vyššie uvedenej syntaxi všetko znamená:

  • je používateľom definovaná premenná, ktorá obsahuje každú položku z .
  • odkazuje na zoznam položiek, cez ktoré je potrebný cyklus for na iteráciu. Môže to byť zoznam čísel, reťazcov, výstup príkazu atď.
  • kľúčové slovo do označuje začiatok cyklu for.
  • obsahuje príkazy alebo príkazy, ktoré sa vykonajú pre každú iteráciu.
  • Kľúčové slovo done znamená koniec cyklu for.

Pozrime sa teraz na niekoľko praktických príkladov založených na POSIX štýle for loop:

Príklad 1: Slučka cez daný rozsah

#!/bin/bash # Print numbers from 1 to 5. for i in $(seq 1 5); do echo $i. done
pomocou bash skriptu vytlačíte všetky celé čísla od 1 do 5

Vo vyššie uvedenom úryvku sa časť $(seq 1 5) používa na vygenerovanie zoznamu celých čísel od 1 do 5. Potom bude prechádzať zoznamom jeden po druhom a potom sa každá hodnota vytlačí na nový riadok.

tlač celých čísel od 1 do 5

Príklad 2: Slučka cez pole

#!/bin/bash fruits=("Apple" "Banana" "Orange" "Grapes") for fruit in "${fruits[@]}"; do echo "Fruit: $fruit"
done
bash skript na vytlačenie názvov ovocia v poli so slučkou for

Pole je dátová štruktúra, ktorá sa používa na to, aby obsahovala viacero údajov rôznych typov. Vo vyššie uvedenom úryvku:

  • Čiara fruits=("Apple" "Banana" "Orange" "Grapes") sa používa na deklarovanie poľa obsahujúceho štyri rôzne názvy ovocia.
  • Čiara "for fruit in "${fruits[@]}"; do” nastaví For Loop. Špecifikuje premennú „ovocie“ na uchovávanie aktuálnej hodnoty prvku a „${fruits[@]}” ako pole, ktoré sa má iterovať. "@“, v rámci “${fruits[@]}“, predstavuje všetky prvky poľa.
  • Čiara "echo "Fruit: $fruit" ” vytlačí názov každého ovocia na nový riadok spolu so slovom „Ovocie“ počas každej iterácie.
  • Nakoniec posledný riadok „hotovo“ znamená koniec cyklu for.

Tu je výstup, ktorý získame z vyššie uvedených príkazov:

tlač všetkých názvov ovocia v poli

Príklad 3: Slučka so substitúciou príkazov

#!/bin/bash. for file in $(ls); do echo "File: $file"
done
pomocou substitúcie príkazov na tlač všetkých názvov súborov v adresári

Spôsob, akým náhrada príkazov funguje, je, že príkaz sa najskôr vykoná a potom cyklus for iteruje celým výstupom príkazu. Príkaz, ktorý sa má opakovať, je umiestnený vo vnútri „$()“. Vo vyššie uvedenom úryvku:

  • V rade for file in $(ls); do, $(ls) časť potom vykoná príkaz „ls“ a jeho výstup (zoznam súborov v aktuálnom adresári) sa použije ako vstup pre cyklus. Cyklus bude iterovať cez každý názov súboru nájdený vo výstupe.
  • Čiara echo "File: $file" vypíše hodnotu premennej „file“ spolu s predponou „File: “ počas každej iterácie. Premenná „file“ obsahuje názov aktuálneho súboru spracovávaného v slučke.
  • Nakoniec posledný riadok „hotovo“ znamená koniec cyklu for.

Výstup pre cyklus for so substitúciou príkazov, ako je ukázané vo vyššie uvedenom príklade, by bol:

tlač všetkých názvov súborov pomocou bash skriptu

Bash For Loop: Syntax štýlu C

Syntax štýlu C vyhovuje používateľom, ktorí sú viac zvyknutí na syntax cyklu for v iných jazykoch, ako sú C, C++, Java, JavaScript atď. Tu je základná syntax cyklu pre štýl C:

for ((; ; ))
do 
done

Vo vyššie uvedenej syntaxi:

  • odkazuje na počiatočnú hodnotu, od ktorej bude premenná cyklu začínať.
  • definuje podmienku, od ktorej bude závisieť výstup; táto podmienka sa kontroluje v každej iterácii.
  • odkazuje na hodnotu, o ktorú sa musí premenná cyklu aktualizovať.
  • odkazuje na príkazy alebo príkazy, ktoré je potrebné vykonať pre každú iteráciu.

Pozrime sa teraz na niekoľko praktických príkladov založených na slučke C štýlu:

Príklad 1: Vytlačte nepárne čísla od 1 do 10

!#/bin/bash for((i = 1; i <= 10; i = i + 1))
do if (( i % 2 == 1 )) then echo "Odd Number: $i" fi. done
pomocou syntaxe štýlu c pre slučku v bash na tlač nepárnych čísel od 1 do 10

Vo vyššie uvedenom úryvku:

  • Čiara for((i = 1; i <= 10; i = i + 1)) inicializuje premennú cyklu na 1, skontroluje, či „hodnota i je menšia alebo rovná 10“ pre každý iteráciu a nakoniec zvyšuje hodnotu i pridaním 1 k aktuálnej hodnote po každom iteráciu.
  • if (( i % 2 == 1 )) skontroluje, či sa zostatková hodnota pri delení aktuálnej hodnoty i 2 rovná 1 alebo nie –
    • ak je deliteľné, vykoná sa odozva riadku „Nepárne číslo: $i“ a vytlačí sa hodnota i.
    • riadok fi označuje koniec podmienky if.
  • Nakoniec posledný riadok ohraničuje koniec cyklu for a vykoná sa na konci.

Tu je výstup, ktorý získate pre vyššie uvedený kód:

tlač nepárnych čísel od 1 do 10

Príklad 2: Slučka cez pole

#!/bin/bash fruits=("Apple" "Banana" "Orange" "Grapes")
for ((i = 0; i < ${#fruits[@]}; i++)); do echo "Fruit $((i+1)): ${fruits[i]}"
done
bash skript so slučkou for na tlač všetkých prvkov v poli

Vo vyššie uvedenom kóde:

  • fruit=(“Jablko” “Banán” “Pomaranč” “Hrozno”) vytvorí pole názvov všetkých druhov ovocia.
  • pre ((i = 0; i < ${#ovocie[@]}; i++)) najprv inicializuje premennú cyklu „i“ na 0, ktorá bude fungovať aj ako indexová premenná pre pole, a slučka pokračuje, pokiaľ je „i“ menšie ako počet prvkov v poli „ovocie“ (označené ako ${#fruits[@]}). Cyklus zvyšuje „i“ o 1 v každej iterácii.
  • Keďže indexy poľa začínajú od 0, ale my ich chceme zobraziť ako začínajúce od 1, riadok echo „Ovocie $((i+1)): ${ovocie[i]}“ vypíše hodnotu, ktorá sa rovná aktuálnemu indexu “ i" plus 1.
  • Nakoniec posledný riadok znamená koniec cyklu for

Tu je výstup vyššie uvedeného cyklu for:

tlač hodnôt v poli
ZNAČKYBash Shell
Zanechať komentár

Odporúčané články

ako používať príkaz grep v linuxe
Ako nastaviť Linux Bash Shell v systéme Windows 10
Zanechať Odpoveď zrušiť odpoveď