logo

Opakujúce sa príkazy | Shell Script

Cyklické príkazy v skriptovaní Shell: Existujú celkom 3 slučkové príkazy, ktoré možno použiť v programovaní bash

Obsah



Na zmenu toku príkazov cyklu sa používajú dva príkazy,

  1. prestávka
  2. ďalej

Ich popis a syntax sú nasledovné:

príkaz `while` v skripte Shell v systéme Linux

Tu sa príkaz vyhodnotí a na základe výsledného cyklu sa vykoná, ak sa príkaz zvýši na hodnotu false, cyklus sa ukončí že.



#/bin/bash while  do       done>

Implementácia slučky „While“ v skripte Shell.

Najprv vytvoríme súbor pomocou textového editora v Linuxe. V tomto prípade používame editor `vim`.

vim looping.sh>

Súbor looping.sh môžete nahradiť požadovaným názvom.

java zoznam

Potom spravíme náš skript spustiteľným pomocou príkazu `chmod` v Linuxe.



chmod +x looping.sh>

#/bin/bash

a=0

# Je menej ako operátor

# Opakujte slučku, kým nebude menej ako 10

zatiaľ čo [ $a -lt 10 ]
robiť
# Vytlačte hodnoty
echo $a
# zvýšenie hodnoty
a=`výraz $a + 1`
hotový

Výkon:

Kým Loop v Linuxe

Kým Loop v Linuxe

Vysvetlenie:

  • #/bin/bash> : Určuje, že skript by sa mal interpretovať pomocou shellu Bash.
  • a=0> : Inicializuje premennúa>s hodnotou 0.
  • while [ $a -lt 10 ]> : Spustí cyklus while, ktorý pokračuje tak dlho, ako je hodnotaa>je menej ako 10.
  • do> : Označuje začiatok tela slučky.
  • echo $a> : Vytlačí aktuálnu hodnotua>konzoly.
  • a=> expr $a + 1 : Zvyšuje hodnotua>od 1. Theexpr>príkaz sa používa pre aritmetické výrazy.
  • done> : Označuje koniec slučky.

príkaz `for` v skripte Shell v systéme Linux

Cyklus for funguje so zoznamami položiek. Opakuje súbor príkazov pre každú položku v zozname.
Tu je var názov premennej a slovo1 až slovoN sú sekvencie znakov oddelené medzerami (slovami). Pri každom spustení cyklu for sa hodnota premennej var nastaví na ďalšie slovo v zozname slov, slovo1 až slovoN.

Syntax:

#/bin/bash for in  do       done>

Implementácia slučky `for` s príkazom `break` v skripte Shell.

Najprv vytvoríme súbor pomocou textového editora v Linuxe. V tomto prípade používame editor `vim`.

vim for.sh>

For.sh môžete nahradiť požadovaným názvom.

Potom spravíme náš skript spustiteľným pomocou príkazu `chmod` v Linuxe.

chmod +x for.sh>

#/bin/bash

#Začiatok cyklu for

za 1 2 3 4 5 6 7 8 9 10
robiť

# ak sa a rovná 5, prerušte slučku
ak [ $a == 5 ]
potom
prestávka
byť

# Vytlačte hodnotu
echo Iterácia nie $a
hotový

Výkon:

Break statement in for Loop in linux

Break statement in for Loop in linux

np.klip

Vysvetlenie:

  • #/bin/bash>: Určuje, že skript by sa mal interpretovať pomocou shellu Bash.
  • for a in 1 2 3 4 5 6 7 8 9 10>: Spustí cyklus for, ktorý iteruje cez hodnoty 1 až 10, pričom každú hodnotu priradí premenneja>v každej iterácii.
  • do>: Označuje začiatok tela slučky.
  • if [ $a == 5 ]>: Skontroluje aktuálnu hodnotua>sa rovná 5.
    • then>: Označí začiatok podmieneného bloku, ktorý sa má vykonať, ak je podmienka pravdivá.
      • break>: Opustí cyklus, ak je podmienka pravdivá.
    • fi>: Označuje koniec podmieneného bloku.
  • echo 'Iteration no $a'>: Vytlačí správu s číslom aktuálnej iterácie.
  • done>: Označuje koniec slučky.

Skript nastaví cyklus for, ktorý iteruje cez hodnoty 1 až 10. Počas každej iterácie kontroluje, či hodnotaa>sa rovná 5. Ak je, slučka sa ukončí pomocoubreak>vyhlásenie. V opačnom prípade vytlačí správu s číslom aktuálnej iterácie. Cyklus pokračuje, kým nedokončí všetky iterácie alebo kým nenarazí na príkaz break.

Implementácia slučky `for` s príkazom `continue` v skripte Shell.

Najprv vytvoríme súbor pomocou textového editora v Linuxe. V tomto prípade používame editor `vim`.

vim for_continue.sh>

For_continue.sh môžete nahradiť požadovaným názvom.

Potom spravíme náš skript spustiteľným pomocou príkazu `chmod` v Linuxe.

chmod +x for_continue.sh>

#/bin/bash

za 1 2 3 4 5 6 7 8 9 10
robiť

# ak a = 5, potom pokračujte v slučke a
#nepresúvajte sa na riadok 8

ak [ $a == 5 ]
potom
ďalej
byť
echo Iterácia nie $a
hotový

Výkon:

pokračovať príkazom v slučke for v systéme Linux

pokračovať príkazom v slučke for v systéme Linux

Vysvetlenie:

uzol zoznamu java
  • #/bin/bash> : Určuje, že skript by sa mal interpretovať pomocou shellu Bash.
  • for a in 1 2 3 4 5 6 7 8 9 10> : Spustí cyklus for, ktorý iteruje cez hodnoty 1 až 10, pričom každú hodnotu priradí premenneja>v každej iterácii.
  • do> : Označuje začiatok tela slučky.
  • if [ $a == 5 ]> : Skontroluje aktuálnu hodnotua>sa rovná 5.
    • then> : Označí začiatok podmieneného bloku, ktorý sa má vykonať, ak je podmienka pravdivá.
      • continue> : Preskočí zvyšok tela cyklu a prejde na ďalšiu iteráciu, ak je podmienka pravdivá.
    • fi> : Označuje koniec podmieneného bloku.
  • echo 'Iteration no $a'> : Vytlačí správu s číslom aktuálnej iterácie. Tento riadok sa preskočí, aka>sa rovná 5 kvôlicontinue>vyhlásenie.
  • done> : Označuje koniec slučky.

Skript nastaví cyklus for, ktorý iteruje cez hodnoty 1 až 10. Počas každej iterácie kontroluje, či hodnotaa>sa rovná 5. Ak áno, cyklus pokračuje do ďalšej iterácie bez vykonania zostávajúcich príkazov v tele cyklu. V opačnom prípade vytlačí správu s číslom aktuálnej iterácie. Cyklus pokračuje, kým nedokončí všetky iterácie.

príkaz `až do` v skripte Shell v systéme Linux

Cyklus do sa vykoná toľkokrát, koľkokrát sa podmienka/príkaz vyhodnotí ako nepravda. Cyklus sa ukončí, keď sa podmienka/príkaz stane pravdivým.

Syntax:

#/bin/bash until  do       done>

Implementácia `until` Loop v Shell Scrip

Najprv vytvoríme súbor pomocou textového editora v Linuxe. V tomto prípade používame editor `vim`.

vim until.sh>

Môžete nahradiť do. sh s požadovaným menom.

Potom spravíme náš skript spustiteľným pomocou príkazu `chmod` v Linuxe.

chmod +x until.sh>

#/bin/bash

a=0

# -gt je väčšie ako operátor
#Opakujte slučku, kým a nebude väčšie ako 10

do [ $a -gt 10]
robiť

# Vytlačte hodnoty
echo $a

# zvýšenie hodnoty
a=`výraz $a + 1`
hotový

Výkon:

Unitl slučka v Linuxe

Až do slučky v Linuxe

Vysvetlenie:

  • #/bin/bash> : Určuje, že skript by sa mal interpretovať pomocou shellu Bash.
  • a=0> : Inicializuje premennúa>s hodnotou 0.
  • until [ $a -gt 10 ]> : Spustí cyklus do, ktorý pokračuje tak dlho, ako je hodnotaa>nie je väčšie ako 10.
  • do> : Označuje začiatok tela slučky.
  • echo $a> : Vytlačí aktuálnu hodnotua>konzoly.
  • a=> expr $a + 1 : Zvyšuje hodnotua>od 1. Theexpr>príkaz sa používa pre aritmetické výrazy.
  • done> : Označuje koniec slučky.

Poznámka: Shell skriptovanie je jazyk citlivý na malé a veľké písmená, čo znamená, že pri písaní skriptov je potrebné dodržiavať správnu syntax.

Príklady cyklických príkazov

1. Iterácia farieb pomocou slučky For

Najprv vytvoríme súbor pomocou textového editora v Linuxe. V tomto prípade používame editor `vim`.

vim color.sh>

Color.sh môžete nahradiť požadovaným názvom.

Potom spravíme náš skript spustiteľným pomocou príkazu `chmod` v Linuxe.

entitný vzťahový
chmod +x color.sh>

#/bin/bash

COLORS=červená zelená modrá

# cyklus for pokračuje, kým neprečíta všetky hodnoty z COLORS

pre COLOR v $COLORS
robiť
echo COLOR: $COLOR
hotový

Výkon:

Kým v Linuxe

Kým v Linuxe

Vysvetlenie:

  • Inicializácia farieb:
    • COLORS='red green blue'>: Inicializuje premennú s názvomCOLORS>so zoznamom hodnôt farieb oddelených medzerami (červená, zelená a modrá).
  • Pre opakovanie slučky:
    • for COLOR in $COLORS>: Iniciuje cyklus for, ktorý iteruje každú hodnotu vCOLORS>premenlivý.
      • Telo slučky:
        • echo 'COLOR: $COLOR'>: Vytlačí správu pre každú farbu so zobrazením aktuálnej hodnoty farby.
    • Cyklus pokračuje, kým nespracuje všetky hodnoty prítomné v súboreCOLORS>premenlivý.

Tento príklad demonštruje jednoduchú slučku for v Bash, iteruje cez zoznam farieb uložených vCOLORS>premenlivý. Slučka vytlačí správu pre každú farbu, ktorá označuje aktuálnu spracovávanú farbu. Cyklus sa opakuje, kým sa nevyčerpajú všetky hodnoty farieb.

2. Vytvorenie nekonečnej slučky s while true v skripte Shell

Najprv vytvoríme súbor pomocou textového editora v Linuxe. V tomto prípade používame `vim`editor.

vim infinite.sh>

Infinite.sh môžete nahradiť požadovaným názvom.

Potom spravíme náš skript spustiteľným pomocou príkazu `chmod` v Linuxe.

chmod +x infinite.sh>

#/bin/bash

zatiaľ čo pravda
robiť

# Príkaz, ktorý sa má vykonať
# spánok 1 znamená, že spí na 1 sekundu
echo Ahoj, som nekonečná slučka
spánok 1
hotový

Výkon:

nekonečná slučka v linuxe

nekonečná slučka v linuxe

Vysvetlenie:

Štruktúra nekonečnej slučky:

  • while true>: Iniciuje cyklus while, ktorý pokračuje donekonečna ako podmienkatrue>je vždy pravda.
    • Telo slučky:
      • echo 'Hi, I am infinity loop'>: Vytlačí správu označujúcu, že skript je v nekonečnej slučke.
      • sleep 1>: Pozastaví vykonávanie cyklu na 1 sekundu pred ďalšou iteráciou.
  • Cyklus pokračuje donekonečna, pričom príkazy vo svojom tele vykonáva opakovane.

Tento príklad ukazuje vytvorenie nekonečnej slučky pomocou konštrukcie while true v Bash. Slučka nepretržite tlačí správu označujúcu jej stav ako nekonečnej slučky a zahŕňa príkaz spánku 1, čo spôsobuje jednosekundové oneskorenie medzi iteráciami. Nekonečné cykly sa často používajú pre procesy, ktoré musia bežať nepretržite, kým sa manuálne neprerušia.

heapify triediť

3. Interaktívna slučka na potvrdenie názvu

Najprv vytvoríme súbor pomocou textového editora v Linuxe. V tomto prípade používame `vim`editor.

vim name.sh>

Názov.sh môžete nahradiť požadovaným názvom.

Potom spravíme náš skript spustiteľným pomocou príkazu `chmod` v Linuxe.

chmod +x name.sh>

#/bin/bash

SPRÁVNE=n
zatiaľ čo [ $SPRÁVNE == n ]
robiť

# slučka sa preruší, keď zadáte y, t.j. keď je vaše meno správne
# -p znamená prompt s požiadavkou na zadanie

read -p Zadajte svoje meno: MENO
read -p Je ${NAME} správne? SPRÁVNE
hotový

Výkon:

Interaktívny skript v Linuxe

Interaktívny skript v Linuxe

Vysvetlenie:

  • Inicializácia:
    • CORRECT=n>: Inicializuje premennú s názvomCORRECT>s hodnotou n. Táto premenná sa používa na riadenie slučky.
  • Interaktívna slučka:
    • while [ '$CORRECT' == 'n' ]>: Spustí cyklus while, ktorý pokračuje tak dlho, ako je hodnotaCORRECT>sa rovná n.
      • Telo slučky:
        • read -p 'Enter your name:' NAME>: Vyzve užívateľa, aby zadal svoje meno a uloží vstup doNAME>premenlivý.
        • read -p 'Is ${NAME} correct? ' CORRECT>: Požiada používateľa, aby potvrdil, či je zadaný názov správny, a aktualizuje hoCORRECT>podľa toho variabilné.
    • Cyklus pokračuje, kým používateľ nezadá y (označuje správny názov).

Tento príklad demonštruje interaktívnu slučku, ktorá vyzve používateľa, aby zadal svoje meno, a potom požiada o potvrdenie. Cyklus pokračuje, kým používateľ nepotvrdí správnosť zadaného názvu zadaním y. Slučka využíva ` read> `>príkaz pre vstup používateľa a aktualizuje súbor ` CORRECT> `>premenná na riadenie toku slučky.

Záver

V tomto článku sme diskutovali o slučkových príkazoch v skriptovaní Bash, ktoré pokrývajúwhile>,for>, auntil>slučky. Uvádza použitiebreak>acontinue>príkazy na úpravu správania slučky. Praktické príklady ilustrujú implementáciu slučiek, vrátane iterovania hodnôt farieb, vytvárania nekonečných slučiek a budovania interaktívnej slučky na overenie používateľského vstupu. Sprievodca ponúka stručný, ale informatívny zdroj na pochopenie a využitie konštrukcií cyklovania v skriptovaní Bash.