GNU/Linux >> Znalost Linux >  >> Linux

Bash For Loop

Smyčky jsou jedním ze základních pojmů programovacích jazyků. Smyčky jsou užitečné, když chcete spouštět řadu příkazů znovu a znovu, dokud není dosaženo určité podmínky.

Ve skriptovacích jazycích, jako je Bash, jsou smyčky užitečné pro automatizaci opakujících se úloh.

Ve skriptování Bash existují tři základní konstrukce smyčky, for smyčka, while smyčka a until smyčka.

V tomto tutoriálu probereme základy smyček for v Bash. Ukážeme vám také, jak používat break a continue příkazy ke změně toku smyčky.

Standardní bash for Smyčka #

for smyčka iteruje přes seznam položek a provádí danou sadu příkazů.

Bash for smyčka má následující tvar:

for item in [LIST]
do
  [COMMANDS]
done

Seznam může být řada řetězců oddělených mezerami, rozsah čísel, výstup příkazu, pole atd.

Smyčka přes řetězce #

V níže uvedeném příkladu bude smyčka iterovat každou položku v seznamu řetězců a proměnnou element bude nastaveno na aktuální položku:

for element in Hydrogen Helium Lithium Beryllium
do
  echo "Element: $element"
done

Smyčka vytvoří následující výstup:

Element: Hydrogen
Element: Helium
Element: Lithium
Element: Beryllium

Opakovat číselný rozsah #

Výraz sekvence můžete použít k určení rozsahu čísel nebo znaků definováním začátku a konce rozsahu. Výraz sekvence má následující tvar:

{START..END}

Zde je příklad smyčky, která prochází všemi čísly od 0 do 3:

for i in {0..3}
do
  echo "Number: $i"
done
Number: 0
Number: 1
Number: 2
Number: 3

Počínaje Bash 4 je také možné určit přírůstek při použití rozsahů. Výraz má následující tvar:

{START..END..INCREMENT}

Zde je příklad ukazující, jak zvýšit o 5:

for i in {0..20..5}
do
  echo "Number: $i"
done
Number: 0
Number: 5
Number: 10
Number: 15
Number: 20

Opakovat prvky pole #

Můžete také použít for smyčka pro iteraci přes pole prvků.

V níže uvedeném příkladu definujeme pole s názvem BOOKS a iterování přes každý prvek pole.

BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby')

for book in "${BOOKS[@]}"; do
  echo "Book: $book"
done
Book: In Search of Lost Time
Book: Don Quixote
Book: Ulysses
Book: The Great Gatsby

Bash ve stylu C pro smyčku #

Syntaxe stylu C for smyčka má následující tvar:

for ((INITIALIZATION; TEST; STEP))
do
  [COMMANDS]
done

INITIALIZATION část se provede pouze jednou, když začne smyčka. Poté TEST část se hodnotí. Pokud je nepravda, smyčka je ukončena. Pokud TEST je true, příkazy v těle for smyčka a STEP část je aktualizována.

V následujícím příkladu kódu je smyčka hvězdička inicializací i = 0 a před každou iterací zkontroluje, zda i ≤ 10 . Pokud je true, vytiskne aktuální hodnotu i a [zvyšuje proměnnou] i o 1 (i++ ) jinak se smyčka ukončí.

for ((i = 0 ; i <= 1000 ; i++)); do
  echo "Counter: $i"
done

Smyčka se bude opakovat 1001krát a vytvoří následující výstup:

Counter: 0
Counter: 1
Counter: 2
...
Counter: 998
Counter: 999
Counter: 1000

break a continue Výroky #

break a continue příkazy lze použít k řízení provádění cyklu for.

break Prohlášení #

break příkaz ukončí aktuální smyčku a předá řízení programu příkazu, který následuje za ukončeným příkazem. Obvykle se používá k ukončení smyčky, když je splněna určitá podmínka.

V následujícím příkladu používáme if příkaz k ukončení provádění smyčky, jakmile je aktuální iterovaná položka rovna ‚Lithium‘.

for element in Hydrogen Helium Lithium Beryllium; do
  if [[ "$element" == 'Lithium' ]]; then
    break
  fi
  echo "Element: $element"
done

echo 'All Done!'
Element: Hydrogen
Element: Helium
All Done!

continue Prohlášení #

continue příkaz ukončí aktuální iteraci smyčky a předá řízení programu další iteraci smyčky.

V následujícím příkladu iterujeme přes řadu čísel. Když je aktuální iterovaná položka rovna ‚2‘, continue příkaz způsobí, že se provedení vrátí na začátek cyklu a bude pokračovat další iterací:

for i in {1..5}; do
  if [[ "$i" == '2' ]]; then
    continue
  fi
  echo "Number: $i"
done
Number: 1
Number: 3
Number: 4
Number: 5

Bash for Příklady smyčky #

Přejmenování souborů s mezerami v názvu souboru #

Následující příklad ukazuje, jak přejmenovat všechny soubory v aktuálním adresáři s mezerou v názvech nahrazením mezery podtržením:

for file in *\ *; do
  mv "$file" "${file// /_}"
done

Pojďme si kód rozebrat řádek po řádku:

  • První řádek vytváří for smyčky a iteruje seznamem všech souborů s mezerou v názvu. Výraz *\ * vytvoří seznam.
  • Druhý řádek se vztahuje na každou položku seznamu a přesune soubor do nového, kde mezeru nahradí podtržítkem (_ ). Část ${file// /_} používá parametr shell expanzi k nahrazení vzoru v parametru řetězcem.
  • done označuje konec segmentu smyčky.

Změna přípony souboru #

Následující příklad ukazuje, jak použít Bash for smyčka pro přejmenování všech odesílání souborů na .jpeg v aktuálním adresáři nahrazením přípony souboru z .jpeg na .jpg.

for file in *.jpeg; do
    mv -- "$file" "${file%.jpeg}.jpg"
done

Pojďme analyzovat kód řádek po řádku:

  • První řádek vytváří for smyčka a iteruje seznam všech souborů končících na „.jpeg“.
  • Druhý řádek se vztahuje na každou položku seznamu a přesune soubor do nového, kde nahradí „.jpeg“ za „.jpg“. ${file%.jpeg} k odstranění části „.jpeg“ z názvu souboru pomocí rozšíření parametru shell
  • done označuje konec segmentu smyčky.

Závěr č.

Bash for smyčka se používá k opakovanému provádění dané sady příkazů po pevně stanovený počet opakování.

Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.


Linux
  1. Jak napsat smyčku v Bash

  2. Bash pro průvodce smyčkou a příklady

  3. Paralelizovat Bash For Loop?

  1. Jak vytvořit smyčku For s měnitelným počtem iterací?

  2. Zvýšit číslo sestavení v Bash?

  3. Udržujeme vás ve smyčce – příklady opakování pro, Zatímco, dokud

  1. Skriptování v Linuxu:3 postupy pro smyčky while v Bash

  2. Příklady Bash for Loop a While Loop

  3. Linux bash. pro smyčku a funkci, pro sčítání čísel