logo

Cikliniai pareiškimai | Shell scenarijus

„Shell“ scenarijaus formavimo teiginiai: Iš viso yra 3 kilpiniai teiginiai, kuriuos galima naudoti programuojant bash

Turinys

Norint pakeisti ciklo teiginių srautą, naudojamos dvi komandos:



java bandyti gaudyti
  1. pertrauka
  2. Tęsti

Jų aprašymai ir sintaksė yra tokia:

„while“ teiginys „Shell Script“ sistemoje „Linux“.

Čia komanda įvertinama ir pagal gautą kilpą bus vykdoma, jei komanda pakelta į false, ciklas bus nutrauktas kad.

#/bin/bash while  do       done>

„While“ ciklo įgyvendinimas „Shell“ scenarijuje.

Pirmiausia sukuriame failą naudodami „Linux“ teksto rengyklę. Šiuo atveju mes naudojame 'vim' redaktorių.

vim looping.sh>

Looping.sh galite pakeisti norimu pavadinimu.

Tada mes padarome savo scenarijų vykdomąjį naudodami komandą „chmod“ sistemoje „Linux“.

chmod +x looping.sh>

#/bin/bash

a=0

# lt yra mažiau nei operatorius

#Pakartokite kilpą iki mažiau nei 10

o [ $a -lt 10 ]
daryti
# Spausdinkite reikšmes
aidas $a
# padidinkite vertę
a=`išreiškinys $a + 1`
padaryta

Išvestis:

Nors ciklas „Linux“.

Nors ciklas „Linux“.

Paaiškinimas:

  • #/bin/bash> : nurodo, kad scenarijus turi būti interpretuojamas naudojant Bash apvalkalą.
  • a=0> : inicijuoja kintamąjįa>su reikšme 0.
  • while [ $a -lt 10 ]> : inicijuoja ciklą, kuris tęsiasi tol, kol yra reikšmėa>yra mažiau nei 10.
  • do> : žymi kilpos korpuso pradžią.
  • echo $a> : spausdina dabartinę reikšmęa>konsolė.
  • a=> išraiška $a + 1 : padidina vertęa>1. Theexpr>komanda naudojama aritmetinėms išraiškoms.
  • done> : pažymi ciklo pabaigą.

„Už“ teiginys „Shell Script“ sistemoje „Linux“.

Ciklas for veikia elementų sąrašuose. Jis pakartoja komandų rinkinį kiekvienam sąrašo elementui.
Čia var yra kintamojo pavadinimas, o žodis1 – žodisN yra simbolių sekos, atskirtos tarpais (žodžiais). Kiekvieną kartą, kai vykdomas ciklas for, kintamojo var reikšmė nustatoma į kitą žodžių sąrašo žodį, nuo word1 iki wordN.

Sintaksė:

#/bin/bash for in  do       done>

„For“ ciklo su „break“ teiginiu įgyvendinimas „Shell“ scenarijuje.

Pirmiausia sukuriame failą naudodami „Linux“ teksto rengyklę. Šiuo atveju mes naudojame 'vim' redaktorių.

vim for.sh>

For.sh galite pakeisti norimu pavadinimu.

Tada mes padarome savo scenarijų vykdomąjį naudodami komandą „chmod“ sistemoje „Linux“.

chmod +x for.sh>

#/bin/bash

#For ciklo pradžia

1 2 3 4 5 6 7 8 9 10
daryti

# jei a yra lygus 5, nutraukite kilpą
jei [ $a == 5 ]
tada
pertrauka
būti

# Spausdinkite vertę
echo Iteracija ne $a
padaryta

Išvestis:

Pertraukite teiginį „Loop“ sistemoje „Linux“.

Pertraukite teiginį „Loop“ sistemoje „Linux“.

Paaiškinimas:

  • #/bin/bash>: nurodo, kad scenarijus turi būti interpretuojamas naudojant Bash apvalkalą.
  • for a in 1 2 3 4 5 6 7 8 9 10>: inicijuoja for kilpą, kuri kartoja reikšmes nuo 1 iki 10, kiekvieną reikšmę priskirdama kintamajama>kiekvienoje iteracijoje.
  • do>: žymi kilpos korpuso pradžią.
  • if [ $a == 5 ]>: patikrina, ar dabartinė vertėa>yra lygus 5.
    • then>: pažymi sąlyginio bloko, kuris turi būti vykdomas, pradžią, jei sąlyga yra teisinga.
      • break>: išeina iš ciklo, jei sąlyga yra teisinga.
    • fi>: pažymi sąlyginio bloko pabaigą.
  • echo 'Iteration no $a'>: išspausdina pranešimą, nurodantį dabartinį iteracijos numerį.
  • done>: pažymi ciklo pabaigą.

Scenarijus nustato for kilpą, kuri kartojasi per reikšmes nuo 1 iki 10. Kiekvienos iteracijos metu jis patikrina, ar reikšmėa>yra lygus 5. Jei taip, ciklas uždaromas naudojantbreak>pareiškimas. Kitu atveju išspausdinamas pranešimas, nurodantis dabartinį iteracijos numerį. Ciklas tęsiasi tol, kol užbaigia visas iteracijas arba kol susiduria su pertraukos sakiniu.

„For“ ciklo su „continue“ teiginiu įgyvendinimas „Shell“ scenarijuje.

Pirmiausia sukuriame failą naudodami „Linux“ teksto rengyklę. Šiuo atveju mes naudojame 'vim' redaktorių.

vim for_continue.sh>

For_continue.sh galite pakeisti norimu pavadinimu.

gimp šriftų sąrašas

Tada mes padarome savo scenarijų vykdomąjį naudodami komandą „chmod“ sistemoje „Linux“.

chmod +x for_continue.sh>

#/bin/bash

1 2 3 4 5 6 7 8 9 10
daryti

# jei a = 5, tada tęskite kilpą ir
# nepereikite į 8 eilutę

jei [ $a == 5 ]
tada
Tęsti
būti
echo Iteracija ne $a
padaryta

Išvestis:

tęsti pareiškimą in for loop sistemoje Linux

tęsti pareiškimą in for loop sistemoje Linux

Paaiškinimas:

  • #/bin/bash> : nurodo, kad scenarijus turi būti interpretuojamas naudojant Bash apvalkalą.
  • for a in 1 2 3 4 5 6 7 8 9 10> : inicijuoja for kilpą, kuri kartoja reikšmes nuo 1 iki 10, kiekvieną reikšmę priskirdama kintamajama>kiekvienoje iteracijoje.
  • do> : žymi kilpos korpuso pradžią.
  • if [ $a == 5 ]> : patikrina, ar dabartinė vertėa>yra lygus 5.
    • then> : pažymi sąlyginio bloko, kuris turi būti vykdomas, pradžią, jei sąlyga yra teisinga.
      • continue> : praleidžia likusią kilpos dalį ir pereina prie kitos iteracijos, jei sąlyga yra teisinga.
    • fi> : pažymi sąlyginio bloko pabaigą.
  • echo 'Iteration no $a'> : išspausdina pranešimą, nurodantį dabartinį iteracijos numerį. Ši eilutė praleidžiama, jeia>yra lygus 5 dėlcontinue>pareiškimas.
  • done> : pažymi ciklo pabaigą.

Scenarijus nustato for kilpą, kuri kartojasi per reikšmes nuo 1 iki 10. Kiekvienos iteracijos metu jis patikrina, ar reikšmėa>yra lygus 5. Jei taip, ciklas tęsiamas į kitą iteraciją, nevykdant likusių teiginių ciklo korpuse. Kitu atveju išspausdinamas pranešimas, nurodantis dabartinį iteracijos numerį. Ciklas tęsiasi tol, kol baigs visas iteracijas.

„iki“ teiginys „Shell Script“ sistemoje „Linux“.

Ciklas iki vykdomas tiek kartų, kiek sąlyga / komanda įvertina kaip false. Ciklas baigiasi, kai sąlyga / komanda tampa tiesa.

Sintaksė:

#/bin/bash until  do       done>

„Iki“ ciklo diegimas „Shell Scrip“.

Pirmiausia sukuriame failą naudodami „Linux“ teksto rengyklę. Šiuo atveju mes naudojame 'vim' redaktorių.

vim until.sh>

Galite pakeisti iki. sh norimu vardu.

Tada mes padarome savo scenarijų vykdomąjį naudodami komandą „chmod“ sistemoje „Linux“.

chmod +x until.sh>

#/bin/bash

a=0

# -gt yra didesnis nei operatorius
#Pakartokite kilpą, kol a yra didesnis nei 10

iki [ $a -gt 10 ]
daryti

# Spausdinkite reikšmes
aidas $a

# padidinkite vertę
a=`išreiškinys $a + 1`
padaryta

Išvestis:

Unitl kilpa Linux

Iki ciklo Linux

Paaiškinimas:

  • #/bin/bash> : nurodo, kad scenarijus turi būti interpretuojamas naudojant Bash apvalkalą.
  • a=0> : inicijuoja kintamąjįa>su reikšme 0.
  • until [ $a -gt 10 ]> : inicijuoja iki ciklo, kuris tęsiasi tol, kol yra reikšmėa>yra ne didesnis kaip 10.
  • do> : žymi kilpos korpuso pradžią.
  • echo $a> : spausdina dabartinę reikšmęa>konsolė.
  • a=> išraiška $a + 1 : padidina vertęa>1. Theexpr>komanda naudojama aritmetinėms išraiškoms.
  • done> : pažymi ciklo pabaigą.

Pastaba: Shell scenarijus yra didžiųjų ir mažųjų raidžių kalba, o tai reiškia, kad rašant scenarijus reikia laikytis tinkamos sintaksės.

Ciklinių teiginių pavyzdžiai

1. Spalvų kartojimas naudojant For Loop

Pirmiausia sukuriame failą naudodami „Linux“ teksto rengyklę. Šiuo atveju mes naudojame 'vim' redaktorių.

vim color.sh>

Color.sh galite pakeisti norimu pavadinimu.

Tada mes padarome savo scenarijų vykdomąjį naudodami komandą „chmod“ sistemoje „Linux“.

chmod +x color.sh>

#/bin/bash

SPALVOS = raudona žalia mėlyna

# ciklas for tęsiasi tol, kol nuskaito visas reikšmes iš COLORS

COLOR, $COLORS
daryti
echo COLOR: $COLOR
padaryta

Išvestis:

Iki Linux

Iki Linux

Paaiškinimas:

  • Spalvų inicijavimas:
    • COLORS='red green blue'>: inicijuoja kintamąjį pavadinimuCOLORS>su tarpais atskirtu spalvų reikšmių sąrašu (raudona, žalia ir mėlyna).
  • Ciklo iteracijai:
    • for COLOR in $COLORS>: inicijuoja for kilpą, kuri kartojasi per kiekvieną reikšmęCOLORS>kintamasis.
      • Kilpos korpusas:
        • echo 'COLOR: $COLOR'>: spausdina kiekvienos spalvos pranešimą, kuriame rodoma dabartinė spalvos reikšmė.
    • Ciklas tęsiasi tol, kol apdoroja visas reikšmesCOLORS>kintamasis.

Šiame pavyzdyje parodytas paprastas „Bash“ ciklas, kartojantis spalvų sąrašą, saugomąCOLORS>kintamasis. Ciklas spausdina pranešimą kiekvienai spalvai, nurodant dabartinę apdorojamą spalvą. Ciklas kartojamas tol, kol išnaudojamos visos spalvų reikšmės.

2. Begalinės kilpos sukūrimas naudojant true „Shell“ scenarijuje

Pirmiausia sukuriame failą naudodami „Linux“ teksto rengyklę. Šiuo atveju mes naudojame 'vim' redaktorių.

vim infinite.sh>

Infinite.sh galite pakeisti norimu pavadinimu.

Tada mes padarome savo scenarijų vykdomąjį naudodami komandą „chmod“ sistemoje „Linux“.

dfs algoritmas
chmod +x infinite.sh>

#/bin/bash

o tiesa
daryti

# Komanda turi būti vykdoma
# miegas 1 reiškia, kad jis miega 1 sek
echo Sveiki, aš esu begalybės kilpa
miegoti 1
padaryta

Išvestis:

begalinis ciklas Linux sistemoje

begalinis ciklas Linux sistemoje

Paaiškinimas:

Begalinės kilpos struktūra:

  • while true>: inicijuoja ciklą, kuris tęsiasi neribotą laiką kaip sąlygatrue>visada yra tiesa.
    • Kilpos korpusas:
      • echo 'Hi, I am infinity loop'>: spausdina pranešimą, nurodantį, kad scenarijus yra begaliniame cikle.
      • sleep 1>: pristabdo ciklo vykdymą 1 sekundei prieš kitą iteraciją.
  • Ciklas tęsiasi neribotą laiką, pakartotinai vykdant komandas savo korpuse.

Šiame pavyzdyje parodytas begalinės kilpos kūrimas naudojant „while“ konstrukciją „Bash“. Ciklas nuolat spausdina pranešimą, nurodantį jo, kaip begalinio ciklo, būseną, ir apima 1 miego komandą, sukeldama vienos sekundės delsą tarp iteracijų. Begalinės kilpos dažnai naudojamos procesams, kurie turi vykti nepertraukiamai, kol nutrūksta rankiniu būdu.

3. Interaktyvi vardo patvirtinimo kilpa

Pirmiausia sukuriame failą naudodami „Linux“ teksto rengyklę. Šiuo atveju mes naudojame 'vim' redaktorių.

vim name.sh>

Name.sh galite pakeisti norimu pavadinimu.

Tada mes padarome savo scenarijų vykdomąjį naudodami komandą „chmod“ sistemoje „Linux“.

chmod +x name.sh>

#/bin/bash

TEISINGAS=n
o [ $TEISINGAS == n ]
daryti

# kilpa nutrūksta, kai įvedate y, t. y. kai jūsų vardas yra teisingas
# -p reiškia greitą įvesties prašymą

skaityti -p Įveskite savo vardą: NAME
skaityti -p Ar ${NAME} teisinga? TEISINGA
padaryta

Išvestis:

Interaktyvus scenarijus Linux

Interaktyvus scenarijus Linux

Paaiškinimas:

  • Inicijavimas:
    • CORRECT=n>: inicijuoja kintamąjį pavadinimuCORRECT>su reikšme n. Šis kintamasis naudojamas kilpai valdyti.
  • Interaktyvi kilpa:
    • while [ '$CORRECT' == 'n' ]>: inicijuoja while kilpą, kuri tęsiasi tol, kol yra reikšmėCORRECT>yra lygus n.
      • Kilpos korpusas:
        • read -p 'Enter your name:' NAME>: ragina vartotoją įvesti savo vardą ir išsaugo įvestįNAME>kintamasis.
        • read -p 'Is ${NAME} correct? ' CORRECT>: prašo vartotojo patvirtinti, ar įvestas vardas teisingas, ir atnaujinaCORRECT>atitinkamai kintama.
    • Ciklas tęsiasi tol, kol vartotojas įveda y (nurodydamas teisingą pavadinimą).

Šiame pavyzdyje parodyta interaktyvi kilpa, raginanti vartotoją įvesti savo vardą ir tada prašo patvirtinimo. Ciklas tęsiasi tol, kol vartotojas patvirtina, kad įvestas vardas teisingas, įvesdamas y. Ciklas naudoja ` read> `>vartotojo įvesties komandą ir atnaujina ` CORRECT> `>kintamasis, skirtas valdyti kilpos srautą.

Išvada

Šiame straipsnyje aptarėme ciklinius teiginius Bash scenarijuose, padengimąwhile>,for>, iruntil>kilpos. Jame pristatomas naudojimasbreak>ircontinue>teiginius, skirtus pakeisti ciklo elgesį. Praktiniai pavyzdžiai iliustruoja kilpų įgyvendinimą, įskaitant spalvų reikšmių kartojimą, begalinių ciklų kūrimą ir interaktyvios kilpos kūrimą vartotojo įvesties patvirtinimui. Vadove pateikiamas glaustas, bet informatyvus šaltinis, padedantis suprasti ir panaudoti „Bash“ scenarijus.