Bash While Loop: Návod a príklady

Bash While Loop: Návod a príklady

Použitie slučky „while“ v skriptovaní Bash na iteráciu príkazov.

Bash (Bourne Again Shell) je príkazový riadok a skriptovací jazyk shellu v operačných systémoch GNU/Linux. Je to predvolený shell pre väčšinu distribúcií Linuxu.

Rovnako ako väčšina skriptovacích jazykov, aj Bash poskytuje syntaxe cyklu na opakovanie podobnej úlohy viackrát. V tomto článku sa naučíme, ako používať whileslučku v Bash.

Úvod

whileSlučka v Bash sa používa pre vykonanie príkazu (y) (vykonávaných príkazov) viackrát na základe výstupe z iného príkazu (y) (stav príkazov). Vykonané príkazy budú bežať, kým sa príkaz podmienky nespustí úspešne (tj vráti stav 0. Akýkoľvek príkaz v Linuxe vráti 0 pre úspech a nenulové celé číslo pre zlyhanie).

Ak existuje viacero podmienkových príkazov, príkaz berie do úvahy iba stav posledného príkazu v zozname, tj cyklus sa vykonáva dovtedy, kým sa úspešne nespustí posledný príkaz v zozname.

Všeobecná syntax

Všeobecná syntax pre whileslučku v Bash je:

while 
do
  
done

Zoznam príkazov na vykonanie bude pokračovať, kým sa posledný príkaz v zozname príkazov podmienok úspešne nespustí a neskončí so stavom 0. V opakovaní, keď posledný príkaz podmienky zlyhá, slučka sa ukončí.

Používateľ môže zadať ľubovoľný spustiteľný súbor v zoznamoch príkazov. Môžu to byť štandardné linuxové programy alebo vlastné užívateľské programy či skripty. Každý príkaz by mal byť buď na novom riadku, alebo oddelený bodkočiarkou na rovnakom riadku.

Pozrime sa na niekoľko príkladov.

Cyklus, kým premenná nemá konkrétnu hodnotu: Nasledujúci cyklus sa vykonáva, kým sa hodnota premennej xnerovná 10.

x=0
while [[ $x -ne 10 ]]
do
  echo $x
  ((x++))
done

V každej iterácii kontrolujeme, či je hodnota x 10. Hodnota sa kontroluje pomocou testpríkazu. [[ Expression ]]je syntax príkazu test (Pozri man test). Keďže tu používame -neoperátor (ktorý znamená „nerovná sa“), testovací príkaz vráti 0, tj úspech, ak hodnota x nie je 10, a vráti nenulovú hodnotu, tj zlyhanie, ak hodnota z x je 10.

Potom vo vnútri do...donebloku vytlačíme hodnotu x a zvýšime ju. Keď je hodnota x 10, testovací príkaz vráti nenulový stav a slučka sa ukončí.

Poznámka: Premenná index, ktorá sa má použiť v slučke while, musí byť inicializovaná buď pred slučkou while alebo v príkazoch podmienky, na rozdiel od cyklu for, ktorý umožňuje inicializovať premennú implicitne.

S viacerými príkazmi podmienok: Nasledujúca slučka vytvorí 5 adresárov s názvom dir0, dir1, ... dir4.

z=0
while
echo "List of files:"
ls -l
[[ $z -ne 5 ]]
do
  echo "Creating dir$z..."
  mkdir dir$z
  ((z++))
done

Prvé príkazy echo "List of files:"a ls -lvykonajú sa raz úplne; ich úspech alebo zlyhanie nemá žiadny vplyv na to, ako dlho bude slučka prebiehať.

Potom sa vykoná testovací príkaz na kontrolu hodnoty premennej z. Kým hodnota z nie je 5, testovací príkaz vracia stav úspechu, a preto slučka beží ďalej. Príkazy podmienok a vykonané príkazy pokračujú v poradí. Tu pre každú iteráciu najprv spustí príkaz echo a príkaz ls v stave a potom príkaz 3. podmienky skontroluje hodnotu z. Ak nie je 5, vstúpi do cyklu a vykoná dané príkazy.

Bash 'While' Loop: Návod a príklady

Prerušiť a pokračovať

Vyhlásenie o prerušení pre podmienený výstup

Môžeme použiť aj podmienený príkaz  if vo vnútri cyklu. Príkaz  if možno použiť s  break príkazom na podmienené opustenie cyklu.

x=0
while [[ $x -ne 10 ]]
do
  if [[ $x -eq 5 ]]
    break
  fi
  echo $x
  ((x++))
done

Vyššie uvedená slučka while vytlačí čísla od 0 do 4. Potom, keď je hodnota i 5, cyklus sa preruší. Toto sa používa najmä vtedy, keď sa má slučka opustiť, keď príkaz poskytuje špecifický výstup.

Ak chcete podmienečne preskočiť iteráciu, pokračujte vo vyhlásení

Bash má tiež  continue príkaz na preskočenie zostávajúcej časti iterácie v slučke, ak je splnená konkrétna podmienka.

x=0
while [[ $x -ne 10 ]]
do
  if [[ $x -eq 5 ]]
    continue
  fi
  echo $x
  ((x++))
done

Vyššie uvedený cyklus vytlačí čísla od 0 do 10, okrem 5, pretože počas iterácie  x=5 existuje príkaz continue, ktorý preskočí zvyšok kódu v slučke na začiatku iterácie  x=6.

Používanie slučiek: Skripty a príkazový riadok

Syntaxe slučiek je možné použiť v prostredí Bash priamo alebo zo spustiteľného súboru skriptu shellu. Podobne ako pri fora whileslučkách, akonáhle while je do shellu zadaná syntax slučky, shell pokračuje vo výzve, aby umožnil užívateľovi pokračovať v zacyklení príkazov.

Bash 'While' Loop: Návod a príklady

Alebo to môže používateľ uložiť do súboru skriptu a spustiť súbor skriptu.

Bash 'While' Loop: Návod a príklady

Na  #!/bin/bash začiatku určuje interpret, ktorý sa má použiť pri spustení súboru. Hoci je Bash v súčasnosti najbežnejšie používaným shellom, niektorí používatelia preferujú shelly ako  zsh, ktoré by malo byť špecifikované namiesto bash na začiatku tohto súboru.

Ak chcete udeliť povolenia  na spustenie tohto súboru, spustite:

chmod +x test.sh

Nakoniec  na spustenie súboru spustite:

./test.sh

Záver

whileSlučka, podobný fora untilslučky sú dôležitým rysom Bash skriptov. Slučka While má podobné použitie ako slučka Until, okrem toho, že sa používa na spustenie alternatívnych príkazov/programov, keď je konkrétny program úspešný. Toto často nachádza svoju užitočnosť v pokročilých sieťových skriptoch, skriptoch údržby systému atď.

Tags: #bash

Nainštalujte TeamViewer 8 pre Ubuntu 12.04

Nainštalujte TeamViewer 8 pre Ubuntu 12.04

V tomto videu inštalujem a používam TeamViewer 8 pre systém ubuntu 12.04 s kompletným sprievodcom. Ale to bude fungovať rovnako na oknách.

Čo je nové v jadre Linuxu 5.14: 8 hlavných vylepšení

Čo je nové v jadre Linuxu 5.14: 8 hlavných vylepšení

Linux často označujeme ako operačný systém, ale v skutočnosti je to len jadro. A uvedené jadro dosiahlo verziu 5.14, čím rozširuje hardvér, ktorý teraz môžete napájať pomocou bezplatného softvéru s otvoreným zdrojovým kódom a vecí, ktoré môžete robiť na uvedených zariadeniach.

KDE Connect vs. Warpinator: Čo je najlepšie na prenos súborov?

KDE Connect vs. Warpinator: Čo je najlepšie na prenos súborov?

Vďaka cloudovému úložisku je úloha bezdrôtového prenosu súborov dostatočne jednoduchá a prebieha automaticky na pozadí. Ale naozaj stojí za to poskytnúť nejakej spoločnosti prístup k vašim súborom, len aby ich presunuli z jedného počítača na druhý, často v tej istej budove? Niekedy dokonca tá istá miestnosť!

Ako spúšťať programy a hry Windows v systéme Linux pomocou Wine

Ako spúšťať programy a hry Windows v systéme Linux pomocou Wine

Wine, čo je skratka pre Windows Emulator, je program pre Linux, ktorý vám umožňuje spúšťať softvér Windows na počítačoch so systémom Linux. to

Ako urobiť test písania v systéme Linux s tt

Ako urobiť test písania v systéme Linux s tt

V modernej ére technológií sa písanie stalo jednou z najbežnejších činností mnohých profesií. Ak sa naučíte písať rýchlejšie s presnosťou, pomôže vám to urobiť viac vecí za rovnaký čas.

Bash While Loop: Návod a príklady

Bash While Loop: Návod a príklady

Použitie cyklu while v skriptovaní Bash na iteráciu príkazov.

Ako spustiť testy rýchlosti z príkazového riadku systému Linux pomocou Speedtest-cli

Ako spustiť testy rýchlosti z príkazového riadku systému Linux pomocou Speedtest-cli

Speedtest.net je služba na testovanie rýchlosti vášho internetového pripojenia. Na sťahovanie používa blízky server speedtest.net

Ako nainštalovať KDE Plasma na Ubuntu

Ako nainštalovať KDE Plasma na Ubuntu

Linux je skutočne modulárny operačný systém. Napríklad máte slobodu nielen zmeniť tapetu pracovnej plochy, ale aj celé prostredie pracovnej plochy. Iné operačné systémy, ako napríklad Windows alebo macOS, sa dodávajú s prednastaveným systémom pracovnej plochy, ktorý nemôžete zmeniť.

Ako nainštalovať Java na Ubuntu 20.04

Ako nainštalovať Java na Ubuntu 20.04

Inštalácia JRE a JDK na Ubuntu 20.04

Ako nájsť a odstrániť duplicitné súbory v systéme Linux pomocou fdupes

Ako nájsť a odstrániť duplicitné súbory v systéme Linux pomocou fdupes

Pri práci s veľkým množstvom médií a dokumentov je celkom bežné, že sa v počítači nahromadia viaceré kópie toho istého súboru. Nevyhnutne nasleduje neprehľadný úložný priestor plný nadbytočných súborov, čo vyvoláva pravidelné kontroly duplicitných súborov vo vašom systéme.