Bash 'if else' vyhlásenie: Návod a príklady

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 elifa 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 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.

Ak žiadna z podmienok nevráti stav 0, 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.

Všimnite si, že potom vyhlásenie sa má použiť až po ak a elif a nevyžadujú sa po inak vyhlásenie.

Príklady

Na vykonanie bloku kódu ak má premenná konkrétnu hodnotu:

x=0 ak [ $x -eq 0 ] potom echo „Hodnota X je 0“ inak echo „Hodnota X nie je 0“ fi

Ak chcete skontrolovať viacero hodnôt:

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

Podmienky môžu byť ľubovoľné príkazy Linuxu. Príslušný blok kódu sa spustí, ak sa príkaz úspešne spustí.

ak npm -v potom echo "NPM prítomný v systéme" inak sudo apt install npm fi

Vo vyššie uvedenom príklade od r 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.

Môžeme zahniezdiť aj ďalšie 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

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:

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

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 elif blokovať tiež.

Vykonávanie ak...inak: Skripty a príkazový riadok

Podobne ako akýkoľvek Bash kód, ak...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.

Používateľ môže tiež uložiť tento kód do súboru skriptu a spustiť súbor skriptu.

The #!/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.

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

chmod +x test.sh

Nakoniec na spustenie súboru spustite:

./test.sh

Záver

Podobne ako v akomkoľvek programovacom jazyku, 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.