Bash "Kuni" tsükkel: õpetus ja näited

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.