Použitie príkazu if...else v Bash na podmienené spustenie kódu.
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.
Podmienené príkazy sú životne dôležité v akomkoľvek programovacom jazyku, skompilovanom aj naskriptovanom. Umožňujú používateľovi vykonať časť kódu na základe vopred definovanej podmienky, ktorá je jedným zo základov programovacej logiky. V tomto článku sa naučíme, ako používať ak...inak
podmienený príkaz v Bash.
Úvod
The ak...inak
príkaz v Bash umožňuje používateľovi manipulovať s tokom kódu na základe podmienok. Používateľ môže špecifikovať samostatné bloky kódu, ktoré sa majú vykonať, pričom iba jeden z nich sa nakoniec spustí počas behu na základe zodpovedajúcej podmienky, ktorá je splnená.
Upozorňujeme, že je možné zadať viac ako dve podmienky, pre ktoré elif
možno použiť výpis. Používateľ môže zadať ľubovoľný počet podmienok pomocou elif
a nakoniec predvolená podmienka pomocou inak
blokovať. Pozrime sa na to viac v syntaxi a príkladoch nižšie.
Všeobecná syntax
Všeobecná syntax pre ak...inak
vyhlásenie v Bash je:
Ak potom inak fi
Tu, ak vyhovuje, t.j. ak vráti 0 (úspech), vykoná sa blok 1 kódu. Ak podmienka nevráti 0, t.j. vráti stav zlyhania, potom sa vykoná blok kódu 2. The
ak...inak
blok končí a fi
vyhlásenie.
Pre viaceré bloky zodpovedajúce viacerým podmienkam,elif
používa sa:
Ak potom elf teda elf teda ... ... inak fi
Tu sa podmienky skontrolujú v poradí a vykoná sa blok kódu prvej podmienky, ktorý vráti stav 0 (úspešný). Napr. ak Ak žiadna z podmienok nevráti stav 0, Všimnite si, že Na vykonanie bloku kódu ak má premenná konkrétnu hodnotu: Ak chcete skontrolovať viacero hodnôt: Podmienky môžu byť ľubovoľné príkazy Linuxu. Príslušný blok kódu sa spustí, ak sa príkaz úspešne spustí. Vo vyššie uvedenom príklade od r Môžeme zahniezdiť aj ďalšie To je užitočné, keď sa má po splnení počiatočnej podmienky skontrolovať samostatný súbor podmienok. Napríklad nasledujúci kód sa pokúša nainštalovať softvér webového servera: Kód najprv skontroluje, či je Nginx už nainštalovaný v systéme. Ak áno, zobrazí sa správa a ukončí sa. Ak nie je, pokúsi sa nainštalovať Nginx. Ak z nejakého dôvodu nie je možné nainštalovať Nginx do systému z balíka, pokúsi sa nainštalovať Apache2. Ak aj Apache2 pri inštalácii vykáže chybu, ukončí sa so zobrazením správy, že nie je možné nainštalovať žiadny softvér. Podobným spôsobom možno použiť vnorený blok vo vnútri Podobne ako akýkoľvek Bash kód, Používateľ môže tiež uložiť tento kód do súboru skriptu a spustiť súbor skriptu. The Ak chcete udeliť povolenia na spustenie tohto súboru, spustite: Nakoniec na spustenie súboru spustite: Podobne ako v akomkoľvek programovacom jazyku, vráti nenulový stav (zlyhanie), potom
je skontrolovaný. Ak
vráti stav 0,
je vykonaný. Potom sa už ďalšie podmienky nekontrolujú a spustenie kódu pokračuje do kódu za
fi
vyhlásenie. v bloku else sa vykoná. Všimnite si, že blok else je voliteľný. Ak nie je splnená žiadna podmienka, tak aj nie
inak
Ak je zadaný blok, nespustí sa žiadny podmienený blok kódu a spustenie kódu bude pokračovať v kóde po fi
ako je znázornené na nasledujúcom diagrame.potom
vyhlásenie sa má použiť až po ak
a elif
a nevyžadujú sa po inak
vyhlásenie.Príklady
x=0 ak [ $x -eq 0 ] potom echo „Hodnota X je 0“ inak echo „Hodnota X nie je 0“ fi
x=2 if [ $x -eq 0 ] then echo "Hodnota X je 0" elif [ $x -eq 1 ] potom echo "Hodnota X je 1" elif [ $x -eq 2 ] potom echo "Hodnota of X je 2" inak echo "Hodnota X nie je 0" fi
ak npm -v potom echo "NPM prítomný v systéme" inak sudo apt install npm fi
npm
nebol nainštalovaný v systéme, príkaz npm -v
vrátil nenulový stav. Preto spustenie kódu prešlo do inak
bloku, kde nainštalujeme npm pomocou apt
správca balíkov. Ako vidíme, vyzvalo ma to na zadanie hesla a začala inštalácia npm.ak...inak
blok vo vnútri an ak
, inak
alebo elif
blokovať:x=0 y=1 ak [ $x -eq 0 ] potom echo "X je 0", ak [ $y -eq 1 ] potom echo "Y je 1" inak echo "Y nie je 1" fi else echo "X je nie 0" fi
ak nginx -v potom echo "NGINX je už nainštalovaný." inak, ak sudo apt nainštaluje nginx, potom echo "Inštalácia NGINX úspešná." elif sudo apt nainštalujte apache2 potom echo "Inštalácia APACHE2 úspešná." else echo "Nie je možné nainštalovať žiadny webový softvér." fi
elif
blokovať tiež.Vykonávanie
ak...inak
: Skripty a príkazový riadokak...inak
príkaz možno použiť v prostredí Bash priamo alebo zo spustiteľného súboru skriptu shellu. Keď tlmočník Bash nájde ak
, inak
alebo elif
príkaz pokračuje v shellu, aby umožnil užívateľovi zadať blok kódu.#!/bin/bash
na 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 mali byť špecifikované namiesto bash na začiatku tohto súboru.chmod +x test.sh
./test.sh
Záver
ak...inak
vyhlásenie je základnou črtou Bash. Naučiť sa jej používať pri písaní základných, ale aj pokročilých skriptov dlhú cestu.