Silmuse „kuni” kasutamine Bashi skriptis käsu(de) ümberlülitamiseks.
Bash (Bourne Again Shell) on GNU/Linuxi operatsioonisüsteemide shell-käsuviip ja skriptikeel. See on enamiku Linuxi distributsioonide vaikekest.
Nagu enamik skriptikeeli, pakub Bash tsüklisüntaksi, et korrata sarnaseid ülesandeid mitu korda. Selles artiklis õpime, kuidas kasutada kuni
silmus Bashis.
Sissejuhatus
The kuni
tsüklit Bashis kasutatakse käsu(de) (käidatud käskude) mitmekordseks täitmiseks teise käsu(te) väljundi alusel (tingimuskäsud). Täidetud käsud töötavad seni, kuni tingimuskäsk ebaõnnestub (st tagastab nullist erineva oleku. Kõik Linuxi käsud tagastavad 0 õnnestumise ja nullist erineva täisarvu ebaõnnestumise korral). See on täpselt vastupidine samas
tsükkel, milles täidetavad käsud töötavad seni, kuni tingimuskäsk on edukas.
Kui tingimuskäske on mitu, arvestab avaldus ainult loendi viimase käsu olekut, st tsükkel jookseb seni, kuni loendi viimane käsk ebaõnnestub.
Üldine süntaks
Üldine süntaks jaoks kuni
tsükkel Bashis on:
kuni tehtud
Täitmiskäskude loend töötab seni, kuni tingimuse käskude loendi viimane käsk ebaõnnestub. Kui viimane käsk on edukas, tsükkel väljub.
Kasutajad saavad käsuloendites määrata mis tahes käivitatava faili. Need võivad olla tavalised Linuxi programmid või kohandatud kasutajaprogrammid või skriptid. Iga käsk peab olema kas uuel real või eraldatud semikooloniga samal real.
Vaatame mõnda näidet.
Pööramine seni, kuni muutujal on konkreetne väärtus: Järgmine tsükkel käivitatakse kuni muutuja väärtuseni x
on 10.
x=0 kuni [[ $x -eq 10 ]] kaja $x ((x++)) tehtud
Igas iteratsioonis kontrollime, kas x väärtus on 10. Väärtust kontrollitakse, kasutades katsetada
käsk. [[ Väljend ]]
on testkäsu süntaks (vt mehe test
).
Siis sees teha...tehtud
plokk, trükime lihtsalt x väärtuse ja suurendame seda. Silmus väljub, kui tingimuskäsk on edukas, st millal $x
on võrdne 10
.
Märge: Indeksi muutuja, mida kasutatakse tsüklis "kuni", tuleb lähtestada kas enne tsüklit "kuni" või tingimuskäskudes, mitte for loop, mis võimaldab muutujat kaudselt lähtestada.
Mitme tingimuse käsuga: Järgmine tsükkel loob 5 nimega kataloogi dir0, dir1, ... dir4
.
z=0 kuni kaja "Tere" kaja "Hüvasti" [[ $z -eq 5 ]] tee kaja "Dir$z loomine..." mkdir dir$z ((z++)) tehtud
Esimesed käsud kordavad "Tere" ja kajavad "Bye" täidetakse üks kord täielikult; nende edu või ebaõnnestumine ei mõjuta tsükli kestust.
Seejärel käivitatakse muutuja z väärtuse kontrollimise testkäsk. Kuni see käsk ebaõnnestub, st kuni z väärtus on 5, töötavad tingimuskäsud ja täidetavad käsud järjekorras. Siin käivitab see iga iteratsiooni puhul esmalt 2 kajakäsku tingimuses ja seejärel kontrollib 3. tingimuse käsk z väärtust. Kui see pole 5, siseneb see tsüklisse ja täidab etteantud käsud.
Katkesta ja jätka
Katkestusavaldus tingimuslikuks väljumiseks
Võime kasutada ka tingimuslauset kui
silmuse sees. The kui
lauset saab kasutada koos a murda
avaldus tingimuslikuks tsüklist väljumiseks.
x=0 kuni [[ $x -eq 10 ]] tehke, kui [[ $x -eq 5 ]] break fi echo $x ((x++)) tehtud
Ülaltoodud kuni silmus prindib numbrid vahemikus 0 kuni 4. Siis, kui i väärtus on 5, läheb see tsüklist välja. See on eriti kasulik siis, kui tsüklist tuleb väljuda, kui käsk annab konkreetse väljundi.
Jätkake avaldusega, et iteratsioon tingimuslikult vahele jätta
Bashil on ka a jätka
lause tsükli iteratsiooni ülejäänud osa vahelejätmiseks, kui konkreetne tingimus on täidetud.
x=0 kuni [[ $x -eq 10 ]] tee, kui [[ $x -eq 5 ]] jätka fi echo $x ((x++)) tehtud
Ülaltoodud silmus prindib numbrid vahemikus 0 kuni 10, välja arvatud 5, kuna iteratsiooni ajal x=5
seal on käsk Jätka, mis jätab iteratsiooni alguses tsükli ülejäänud koodi vahele x=6
.
Silmuste kasutamine: skriptid ja käsurida
Silmusüntakseid saab kasutada Bashi kestas otse või käivitatavast shelliskriptifailist. Sarnane jaoks
ja samas
silmuseid, kord an kuni
tsükli süntaks sisestatakse kestale, jätkab kest viipa, et lubada kasutajal jätkata silmuskäskude andmist.
Muidu saab kasutaja selle skriptifaili salvestada ja skriptifaili käivitada.
The #!/bin/bash
alguses määrab tõlgi, mida faili käivitamisel kasutatakse. Kuigi Bash on tänapäeval kõige sagedamini kasutatav kest, eelistavad mõned kasutajad selliseid kestasid nagu zsh
, mis tuleks selle faili alguses määrata bashi asemel.
Käivitusõiguste andmiseks selle faili jaoks käivitage:
chmod +x test.sh
Lõpuks faili käivitamiseks, jookse:
./test.sh
Järeldus
The kuni
loop on Bashi skriptimise teine oluline funktsioon. See on eriti oluline keeruliste skriptide puhul, kui teatud programmide komplekt peaks tagastama tõrkeoleku ja tõrke logimiseks, vea üksikasjalikuks kuvamiseks või lihtsalt mõne alternatiivse programmi käivitamiseks tuleb käivitada mõni muu käsk.