logo

Opakování příkazů | Shell Script

Opakování příkazů ve skriptování Shell: Existují celkem 3 smyčkové příkazy, které lze použít v programování bash

Obsah



Ke změně toku příkazů smyčky se používají dva příkazy,

  1. přestávka
  2. pokračovat

Jejich popis a syntaxe jsou následující:

Příkaz `while` ve skriptu Shell v Linuxu

Zde je příkaz vyhodnocen a na základě výsledné smyčky bude vykonán, pokud je příkaz zvýšen na false, smyčka bude ukončena že.



#/bin/bash while  do       done>

Implementace smyčky `While` ve skriptu Shell.

Nejprve vytvoříme soubor pomocí textového editoru v Linuxu. V tomto případě používáme `vim`editor.

vim looping.sh>

Looping.sh můžete nahradit požadovaným názvem.

Potom uděláme náš skript spustitelný pomocí příkazu `chmod` v Linuxu.



chmod +x looping.sh>

#/bin/bash

a=0

# Je menší než operátor

# Opakujte smyčku, dokud nebude méně než 10

zatímco [ $a -lt 10]
dělat
# Vytiskněte hodnoty
echo $a
# zvýšení hodnoty
a=`výraz $a + 1`
Hotovo

Výstup:

Zatímco Loop v Linuxu

Zatímco Loop v Linuxu

Vysvětlení:

  • #/bin/bash> : Určuje, že skript by měl být interpretován pomocí prostředí Bash.
  • a=0> : Inicializuje proměnnoua>s hodnotou 0.
  • while [ $a -lt 10 ]> : Spustí smyčku while, která pokračuje tak dlouho, dokud je hodnotaa>je méně než 10.
  • do> : Označuje začátek těla smyčky.
  • echo $a> : Vytiskne aktuální hodnotua>konzole.
  • a=> expr $a + 1 : Zvyšuje hodnotua>od 1. Theexpr>příkaz se používá pro aritmetické výrazy.
  • done> : Označuje konec smyčky.

Příkaz `for` ve skriptu Shell v Linuxu

Smyčka for pracuje se seznamy položek. Opakuje sadu příkazů pro každou položku v seznamu.
Zde var je název proměnné a slovo1 až slovoN jsou sekvence znaků oddělené mezerami (slovy). Při každém spuštění cyklu for se hodnota proměnné var nastaví na další slovo v seznamu slov, slovo1 až slovoN.

Syntax:

instance java
#/bin/bash for in  do       done>

Implementace `for` Loop s příkazem `break` ve skriptu Shell.

Nejprve vytvoříme soubor pomocí textového editoru v Linuxu. V tomto případě používáme `vim`editor.

vim for.sh>

For.sh můžete nahradit požadovaným názvem.

Potom uděláme náš skript spustitelný pomocí příkazu `chmod` v Linuxu.

chmod +x for.sh>

#/bin/bash

#Začátek cyklu for

pro a v 1 2 3 4 5 6 7 8 9 10
dělat

# pokud a je rovno 5, přerušte smyčku
if [ $a == 5 ]
pak
přestávka
být

# Vytiskněte hodnotu
echo Iterace ne $a
Hotovo

Výstup:

Break statement in for Loop v linuxu

Break statement in for Loop v linuxu

Vysvětlení:

  • #/bin/bash>: Určuje, že skript by měl být interpretován pomocí prostředí Bash.
  • for a in 1 2 3 4 5 6 7 8 9 10>: Inicializuje cyklus for, který iteruje přes hodnoty 1 až 10, přičemž každou hodnotu přiřadí proměnnéa>v každé iteraci.
  • do>: Označuje začátek těla smyčky.
  • if [ $a == 5 ]>: Zkontroluje, zda je aktuální hodnotaa>se rovná 5.
    • then>: Označuje začátek podmíněného bloku, který se má provést, pokud je podmínka pravdivá.
      • break>: Opustí smyčku, pokud je podmínka pravdivá.
    • fi>: Označuje konec podmíněného bloku.
  • echo 'Iteration no $a'>: Vytiskne zprávu s číslem aktuální iterace.
  • done>: Označuje konec smyčky.

Skript nastaví cyklus for, který iteruje přes hodnoty 1 až 10. Během každé iterace zkontroluje, zda hodnotaa>se rovná 5. Pokud ano, smyčka se ukončí pomocíbreak>prohlášení. V opačném případě vytiskne zprávu s číslem aktuální iterace. Cyklus pokračuje, dokud nedokončí všechny iterace nebo dokud nenarazí na příkaz break.

Implementace `for` Loop s příkazem `continue` ve skriptu Shell.

Nejprve vytvoříme soubor pomocí textového editoru v Linuxu. V tomto případě používáme `vim`editor.

vim for_continue.sh>

For_continue.sh můžete nahradit požadovaným názvem.

stojící

Potom uděláme náš skript spustitelný pomocí příkazu `chmod` v Linuxu.

chmod +x for_continue.sh>

#/bin/bash

pro a v 1 2 3 4 5 6 7 8 9 10
dělat

# pokud a = 5, pak pokračujte ve smyčce a
# nepřecházejte na řádek 8

if [ $a == 5 ]
pak
pokračovat
být
echo Iterace ne $a
Hotovo

Výstup:

pokračovat příkazem ve smyčce for v Linuxu

pokračovat příkazem ve smyčce for v Linuxu

Vysvětlení:

  • #/bin/bash> : Určuje, že skript by měl být interpretován pomocí prostředí Bash.
  • for a in 1 2 3 4 5 6 7 8 9 10> : Inicializuje cyklus for, který iteruje přes hodnoty 1 až 10, přičemž každou hodnotu přiřadí proměnnéa>v každé iteraci.
  • do> : Označuje začátek těla smyčky.
  • if [ $a == 5 ]> : Zkontroluje, zda je aktuální hodnotaa>se rovná 5.
    • then> : Označuje začátek podmíněného bloku, který se má provést, pokud je podmínka pravdivá.
      • continue> : Přeskočí zbytek těla smyčky a přejde k další iteraci, pokud je podmínka pravdivá.
    • fi> : Označuje konec podmíněného bloku.
  • echo 'Iteration no $a'> : Vytiskne zprávu s číslem aktuální iterace. Tento řádek je přeskočen, pokuda>se rovná 5 kvůlicontinue>prohlášení.
  • done> : Označuje konec smyčky.

Skript nastaví cyklus for, který iteruje přes hodnoty 1 až 10. Během každé iterace zkontroluje, zda hodnotaa>je roven 5. Pokud ano, cyklus pokračuje do další iterace bez provedení zbývajících příkazů v těle cyklu. V opačném případě vytiskne zprávu s číslem aktuální iterace. Cyklus pokračuje, dokud nedokončí všechny iterace.

příkaz `until` v Shell Script v Linuxu

Cyklus till se provede tolikrát, kolikrát je podmínka/příkaz vyhodnocen jako nepravda. Cyklus skončí, když se podmínka/příkaz stane pravdivým.

Syntax:

#/bin/bash until  do       done>

Implementace `until` Loop v Shell Scrip

Nejprve vytvoříme soubor pomocí textového editoru v Linuxu. V tomto případě používáme `vim`editor.

vim until.sh>

Můžete vyměnit do. sh s požadovaným jménem.

Potom uděláme náš skript spustitelný pomocí příkazu `chmod` v Linuxu.

chmod +x until.sh>

#/bin/bash

a=0

# -gt je větší než operátor
# Opakujte smyčku, dokud a není větší než 10

do [ $a -gt 10]
dělat

# Vytiskněte hodnoty
echo $a

# zvýšení hodnoty
a=`výraz $a + 1`
Hotovo

Výstup:

Unitl smyčka v Linuxu

Až do smyčky v Linuxu

Vysvětlení:

  • #/bin/bash> : Určuje, že skript by měl být interpretován pomocí prostředí Bash.
  • a=0> : Inicializuje proměnnoua>s hodnotou 0.
  • until [ $a -gt 10 ]> : Inicializuje cyklus dokud, který pokračuje tak dlouho, dokud je hodnotaa>není větší než 10.
  • do> : Označuje začátek těla smyčky.
  • echo $a> : Vytiskne aktuální hodnotua>konzole.
  • a=> expr $a + 1 : Zvyšuje hodnotua>od 1. Theexpr>příkaz se používá pro aritmetické výrazy.
  • done> : Označuje konec smyčky.

Poznámka: Skriptování shellu je jazyk citlivý na velká a malá písmena, což znamená, že při psaní skriptů je třeba dodržovat správnou syntaxi.

Příklady cyklických příkazů

1. Iterace přes barvy pomocí smyčky For

Nejprve vytvoříme soubor pomocí textového editoru v Linuxu. V tomto případě používáme `vim`editor.

vim color.sh>

Color.sh můžete nahradit požadovaným názvem.

Potom uděláme náš skript spustitelný pomocí příkazu `chmod` v Linuxu.

chmod +x color.sh>

#/bin/bash

COLORS=červená zelená modrá

# smyčka for pokračuje, dokud nepřečte všechny hodnoty z COLORS

pro COLOR v $COLORS
dělat
echo COLOR: $COLOR
Hotovo

Výstup:

Až do v Linuxu

Až do v Linuxu

Vysvětlení:

  • Inicializace barev:
    • COLORS='red green blue'>: Inicializuje proměnnou s názvemCOLORS>se seznamem barevných hodnot oddělených mezerami (červená, zelená a modrá).
  • Pro opakování smyčky:
    • for COLOR in $COLORS>: Inicializuje cyklus for, který iteruje každou hodnotu vCOLORS>variabilní.
      • Tělo smyčky:
        • echo 'COLOR: $COLOR'>: Vytiskne zprávu pro každou barvu se zobrazením aktuální hodnoty barvy.
    • Smyčka pokračuje, dokud nezpracuje všechny hodnoty přítomné v souboruCOLORS>variabilní.

Tento příklad ukazuje jednoduchou smyčku for v Bash, iterující přes seznam barev uložených vCOLORS>variabilní. Smyčka vytiskne zprávu pro každou barvu, která označuje aktuální zpracovávanou barvu. Cyklus se opakuje, dokud nejsou vyčerpány všechny hodnoty barev.

2. Vytvoření nekonečné smyčky s while true ve skriptu Shell

Nejprve vytvoříme soubor pomocí textového editoru v Linuxu. V tomto případě používáme `vim`editor.

vim infinite.sh>

Infinite.sh můžete nahradit požadovaným názvem.

Potom uděláme náš skript spustitelný pomocí příkazu `chmod` v Linuxu.

df.loc
chmod +x infinite.sh>

#/bin/bash

zatímco pravdivé
dělat

# Příkaz, který se má provést
# sleep 1 znamená, že spí na 1 sekundu
echo Ahoj, jsem nekonečná smyčka
spát 1
Hotovo

Výstup:

nekonečná smyčka v linuxu

nekonečná smyčka v linuxu

Vysvětlení:

Struktura nekonečné smyčky:

  • while true>: Inicializuje smyčku while, která pokračuje neomezeně jako podmínkatrue>je vždy pravda.
    • Tělo smyčky:
      • echo 'Hi, I am infinity loop'>: Vytiskne zprávu oznamující, že skript je v nekonečné smyčce.
      • sleep 1>: Pozastaví provádění cyklu na 1 sekundu před další iterací.
  • Smyčka pokračuje donekonečna a opakovaně provádí příkazy v jejím těle.

Tento příklad ukazuje vytvoření nekonečné smyčky pomocí konstrukce while true v Bash. Smyčka nepřetržitě tiskne zprávu indikující její stav jako nekonečná smyčka a zahrnuje příkaz spánku 1, což způsobuje jednosekundové zpoždění mezi iteracemi. Nekonečné smyčky se často používají pro procesy, které potřebují běžet nepřetržitě, dokud nejsou ručně přerušeny.

3. Interaktivní smyčka pro potvrzení názvu

Nejprve vytvoříme soubor pomocí textového editoru v Linuxu. V tomto případě používáme `vim`editor.

vim name.sh>

Název.sh můžete nahradit požadovaným názvem.

Potom uděláme náš skript spustitelný pomocí příkazu `chmod` v Linuxu.

chmod +x name.sh>

#/bin/bash

SPRÁVNĚ=n
zatímco [ $CORRECT == n ]
dělat

# smyčka se přeruší, když zadáte y, tj. když je vaše jméno správné
# -p znamená prompt s dotazem na vstup

read -p Zadejte své jméno: JMÉNO
read -p Je ${NAME} správně? OPRAVIT
Hotovo

Výstup:

Interaktivní skript v Linuxu

Interaktivní skript v Linuxu

Vysvětlení:

  • Inicializace:
    • CORRECT=n>: Inicializuje proměnnou s názvemCORRECT>s hodnotou n. Tato proměnná se používá k ovládání smyčky.
  • Interaktivní smyčka:
    • while [ '$CORRECT' == 'n' ]>: Inicializuje smyčku while, která pokračuje tak dlouho, dokud je hodnotaCORRECT>se rovná n.
      • Tělo smyčky:
        • read -p 'Enter your name:' NAME>: Vyzve uživatele k zadání jména a uloží vstup doNAME>variabilní.
        • read -p 'Is ${NAME} correct? ' CORRECT>: Požádá uživatele o potvrzení, zda je zadané jméno správné, a aktualizujeCORRECT>podle toho variabilní.
    • Cyklus pokračuje, dokud uživatel nezadá y (označující správný název).

Tento příklad ukazuje interaktivní smyčku, která vyzve uživatele k zadání jména a poté požádá o potvrzení. Cyklus pokračuje, dokud uživatel nepotvrdí správnost zadaného jména zadáním y. Smyčka využívá ` read> `>příkaz pro vstup uživatele a aktualizuje soubor ` CORRECT> `>proměnná pro řízení toku smyčky.

Závěr

V tomto článku jsme diskutovali o opakování příkazů ve skriptování Bash, které pokrývajíwhile>,for>, auntil>smyčky. Uvádí použitíbreak>acontinue>příkazy pro úpravu chování smyčky. Praktické příklady ilustrují implementaci smyček, včetně iterace přes barevné hodnoty, vytváření nekonečných smyček a budování interaktivní smyčky pro ověřování uživatelských vstupů. Průvodce nabízí stručný, ale informativní zdroj pro pochopení a využití cyklických konstrukcí ve skriptování Bash.