Bash While Loop: Návod a príklady
Použitie cyklu while v skriptovaní Bash na iteráciu príkazov.
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ť while
slučku v Bash.
Úvod
while
Sluč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 while
sluč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 x
nerovná 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 test
príkazu. [[ Expression ]]
je syntax príkazu test (Pozri man test
). Keďže tu používame -ne
operá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...done
bloku 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 -l
vykonajú 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.
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 for
a while
sluč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.
Alebo to môže používateľ uložiť do súboru skriptu a spustiť súbor skriptu.
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
while
Slučka, podobný for
a until
sluč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ď.
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.
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.
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ť!
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
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.
Použitie cyklu while v skriptovaní Bash na iteráciu príkazov.
Speedtest.net je služba na testovanie rýchlosti vášho internetového pripojenia. Na sťahovanie používa blízky server speedtest.net
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ť.
Inštalácia JRE a JDK na Ubuntu 20.04
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.