GNU/Linux >> Znalost Linux >  >> Linux

Bash, zatímco Loop

Smyčky jsou jedním ze základních pojmů programovacích jazyků. Smyčky jsou užitečné, když chcete spustit sérii příkazů několikrát, dokud není splněna určitá podmínka.

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.

Tento tutoriál pokrývá základy while smyčky v Bash. Také vám ukážeme, jak používat break a continue příkazy ke změně toku smyčky.

Bash while Smyčka #

while smyčka se používá k provedení dané sady příkazů neznámého počtu opakování, dokud se daná podmínka vyhodnotí jako pravdivá.

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

while [CONDITION]
do
  [COMMANDS]
done

while příkaz začíná while klíčové slovo, za nímž následuje podmíněný výraz.

Podmínka je vyhodnocena před provedením příkazů. Pokud se podmínka vyhodnotí jako pravdivá, příkazy se provedou. V opačném případě, pokud se podmínka vyhodnotí jako nepravda, smyčka se ukončí a řízení programu bude předáno příkazu, který následuje.

V níže uvedeném příkladu je v každé iteraci aktuální hodnota proměnné i se vytiskne a zvýší se o jednu.

i=0

while [ $i -le 2 ]
do
  echo Number: $i
  ((i++))
done

Tue smyčka se opakuje tak dlouho, dokud i je menší nebo roven dvěma. Vytvoří následující výstup:

Number: 0
Number: 1
Number: 2

Nekonečné while Smyčka #

Nekonečná smyčka je smyčka, která se neomezeně opakuje a nikdy nekončí. Pokud se podmínka vždy vyhodnotí jako pravdivá, dostanete nekonečnou smyčku.

V následujícím příkladu používáme vestavěný příkaz : vytvořit nekonečnou smyčku. : vždy vrátí true. Můžete také použít true vestavěný nebo jakýkoli jiný příkaz, který vždy vrátí hodnotu true.

while :
do
  echo "Press <CTRL+C> to exit."
  sleep 1
done

while smyčka výše poběží neomezeně dlouho. Smyčku můžete ukončit stisknutím CTRL+C .

Zde je jednořádkový ekvivalent:

while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done

Přečíst soubor řádek po řádku #

Jedno z nejběžnějších použití while smyčka je číst soubor, datový tok nebo proměnnou řádek po řádku.

Zde je příklad, který zní /etc/passwd soubor řádek po řádku a vytiskne každý řádek:

file=/etc/passwd

while read -r line; do
  echo $line
done < "$file"

Místo ovládání while smyčky s podmínkou, používáme přesměrování vstupu (< "$file" ) předat soubor do read příkaz, který řídí smyčku. while smyčka bude probíhat, dokud nebude přečten poslední řádek.

Při čtení souboru řádek po řádku vždy použijte read pomocí -r možnost zabránit zpětnému lomítku, aby fungoval jako znak escape.

Ve výchozím nastavení read příkaz ořízne úvodní/koncové mezery (mezery a tabulátory). Použijte IFS= možnost před read jak tomuto chování zabránit:

file=/etc/passwd

while IFS= read -r line; do
  echo $line
done < "$file"

break a continue Výroky #

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

break Prohlášení #

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

V následujícím příkladu bude provádění smyčky přerušeno, jakmile bude aktuální iterovaná položka rovna 2 .

i=0

while [ $i -lt 5 ]
do
  echo "Number: $i"
  ((i++))
  if [[ "$i" == '2' ]]; then
    break
  fi
done

echo 'All Done!'
Number: 0
Number: 1
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 níže platí, že jakmile 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í.

i=0

while [ $i -lt 5 ]
do
  ((i++))
  if [[ "$i" == '2' ]]; then
    continue
  fi
  echo "Number: $i"
done

echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!

Závěr č.

while loop opakovaně provádí danou sadu příkazů, dokud je podmínka pravdivá.

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


Linux
  1. Bash for smyčky Příklady

  2. Pomocí a ve smyčce Bash while

  3. proč se smyčka bash while neukončí při napojení na ukončený dílčí příkaz?

  1. Jak napsat smyčku v Bash

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

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

  1. Paralelizovat Bash For Loop?

  2. Ssh způsobí, že se smyčka zastaví?

  3. Bash Beginner Series #8:Loops in Bash