Bash Scripting – Úvod do Bash a Bash Scripting

Bash Scripting – Úvod do Bash a Bash Scripting

Bash je interpret príkazového riadku alebo Unix Shell a je široko používaný v operačnom systéme GNU/Linux. Napísal ju Brian Jhan Fox. Používa sa ako predvolený prihlasovací shell pre väčšinu distribúcií Linuxu. Skriptovanie sa používa na automatizáciu vykonávania úloh, aby ich ľudia nemuseli vykonávať samostatne. Bash skriptovanie je skvelý spôsob, ako automatizovať rôzne typy úloh v systéme. Vývojári sa môžu vyhnúť opakovaným úlohám pomocou bash skriptovania.

Skriptovanie Bash podporuje premenné, podmienené príkazy a slučky rovnako ako programovacie jazyky. Nižšie sú uvedené niektoré aplikácie Bash skriptov –

Obsah

Aplikácie Bash skriptov:

  • Manipulácia so súbormi
  • Vykonávanie rutinných úloh, ako je operácia zálohovania
  • automatizácia

Výhody používania Bash skriptov sú uvedené nižšie –

Výhody Bash skriptov:

  • Je to jednoduché.
  • Pomáha vyhnúť sa opakovaným úlohám
  • Jednoduché použitie
  • Často vykonávané úlohy je možné automatizovať
  • Postupnosť príkazov môže byť spustená ako jeden príkaz.

Nevýhody Bash skriptov sú uvedené nižšie –

Nevýhody Bash skriptov:

  • Akákoľvek chyba pri písaní môže byť drahá.
  • Nový proces spustený pre takmer každý vykonaný príkaz shellu
  • Pomalá rýchlosť vykonávania
  • Problémy s kompatibilitou medzi rôznymi platformami

Ako písať Bash skripty?

Ak chcete napísať Bash Script, budeme postupovať podľa krokov –

  • Najprv si vytvoríme súbor s príponou .sh.
  • Ďalej si v ňom zapíšeme bash skripty
  • Potom mu poskytneme povolenie na vykonanie.

Na vytvorenie a zápis súboru s príponou .sh môžeme použiť gedit textový editor. Príkaz na to bude -

gedit scriptname.sh 

Prvý riadok nášho súboru skriptu bude –

#!/bin/bash 

To povie systému, aby použil Bash na vykonanie. Potom môžeme písať vlastné skripty.

Napíšme si jednoduchý skript, ktorý vytlačí niekoľko riadkov v termináli. Kód na to bude -

#!/bin/bash echo 'Hello, techcodeview.com' 

Teraz súbor uložíme a poskytneme mu povolenie na vykonanie. Ak to chcete urobiť, použite nasledujúci príkaz -

chmod +x scriptname.sh 

Ďalej na spustenie nasledujúceho skriptu použijeme nasledujúci príkaz –

./scriptname.sh 

Tu je obrázkové zobrazenie shellu terminálu po vykonaní vyššie uvedených príkazov takto:

Tu je názov súboru skriptu gfg.sh.

Teraz môžeme pomocou skriptov Bash písať aj zložitejšie príkazy. Nižšie je uvedený príklad, v ktorom používame príkaz podmienky –

Príklad skriptu:

#!/bin/bash Age=17 if [ '$Age' -ge 18 ]; then echo 'You can vote' else echo 'You cannot vote' fi 

Výkon:

You cannot vote 

Tu je obrázkové zobrazenie shellu terminálu po vykonaní vyššie uvedeného skriptu takto:

Vyššie uvedeným spôsobom môžeme vykonať viacero príkazov Bash naraz.

Teraz sa pozrime na ďalšie dôležité koncepty súvisiace s Bash Scripting.

Názvy súborov a povolenia

Vo vyššie uvedenom príklade sme uložili súbor pomocou gfg.sh názov a tiež poskytnuté povolenie na vykonanie pomocou chmod príkaz. Teraz poďme pochopiť, prečo sme to urobili.

Pri písaní bash skriptov by sme mali uložiť náš súbor s príponou .sh, aby ho systém Linux mohol spustiť. Keď prvýkrát vytvoríme súbor s príponou .sh, nemá žiadne povolenie na spustenie a bez povolenia na spustenie skript nebude fungovať. Takže by sme mu mali poskytnúť povolenie na vykonanie pomocou chmod príkaz.

Názov súboru bash skriptu môže byť akýkoľvek, ale podľa konvencie sa odporúča použiť na pomenovanie súboru skriptu hadí prípad ( my_bash_script.sh ) alebo spojovníky ( my-bash-script.sh ).

Premenné

V bash skriptovaní môžeme použiť premenné. Nižšie je uvedený vzorový program na pochopenie použitia premenných v skriptoch Bash.

Príklad skriptu:

Name='SATYAJIT GHOSH' Age=20 echo 'The name is $Name and Age is $Age' 

Výstup premenných:

The name is SATYAJIT GHOSH and Age is 20 

Takže tu sú deklarované dve premenné názov a ďalší je Vek. Tieto premenné sú dostupné pomocou $Name a $Age. To znamená, že môžeme deklarovať premennú v bash skripte pomocou Názov premennej=Hodnota a môže k nemu pristupovať pomocou $VariableName. Tu je obrázkové zobrazenie shellu terminálu po vykonaní vyššie uvedeného skriptu takto:

V rámci skriptovania Bash existujú dva typy premenných. Ak je premenná deklarovaná vo funkcii, zvyčajne je to a lokálna premenná a ak je deklarovaný vonku, potom je to a globálna premenná . V prípade bash skriptu je tento koncept trochu iný, tu je akákoľvek premenná, či už je štandardne napísaná vo vnútri funkcie alebo mimo funkcie, globálnou premennou. Ak chceme vytvoriť lokálnu premennú, musíme použiť kľúčové slovo local.

Poznámka: Najlepšou praxou je vždy použiť lokálnu premennú vo funkcii, aby ste sa vyhli zbytočnému zmätku.

Príklad toho istého je uvedený nižšie -

Príklad skriptu:

#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3' 

Výstup lokálnych a globálnych premenných:

The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry 

Tu v tomto vyššie uvedenom príklade je var2 lokálna premenná, takže keď k nej pristupujeme z funkcie, ide to dobre, ale keď sa k nej pokúšame pristupovať mimo funkcie, dáva nám na výstupe prázdny výsledok.

Na druhej strane, na rozdiel od programovacích jazykov, aj keď je var3 definovaný vo funkcii, stále funguje ako globálna premenná a je možné k nej pristupovať mimo funkcie. Nižšie je znázornenie shellu terminálu po vykonaní skriptu –

Vstup a výstup

Vstup a výstup sú základné pojmy pre skriptovanie shellu. Skript môže mať jeden alebo viac vstupov a môže tiež produkovať nula alebo veľa výstupov. Môže dokonca spôsobiť nejaké chyby. Pochopme to na príklade -

Príklad skriptu:

echo 'Enter filename' read filename if [ -e $filename ] then echo '$filename is exits on the directory' cat $filename else cat>$filename echo 'Súbor vytvorený' fi 

Výstup vstupu a výstupu:

Prvýkrát:

Enter filename geeks.txt Hello Geek File created 

Druhýkrát:

Enter filename geeks.txt geeks.txt is exits on the directory Hello Geek 

Takže v tomto vyššie uvedenom príklade prvýkrát skript nemohol nájsť žiadny súbor s týmto názvom súboru a spustí sa blok else. Vytvoril súbor a vložil doň nejaké údaje. Keď ho spustíme druhýkrát s rovnakým názvom súboru, potom súbor nájde. Spustí sa teda blok if a zobrazí obsah súboru. Čítanie obsahu súboru je vstup a prvé vloženie údajov do súboru sa považuje za výstup. Tu sme použili > na uloženie obsahu do súboru. The > zápis sa používa na presmerovanie stdout do súboru. Na druhej strane môžeme použiť 2> zápis na presmerovanie stderr, a &> na presmerovanie stdout aj stderr.

Nižšie je zobrazené zobrazenie shellu terminálu po vykonaní nasledujúceho skriptu –

Funkcie

V programovaní je funkcia A blok kódu, ktorý vykonáva niektoré úlohy a môže byť volaný viackrát na vykonávanie úloh. Najjednoduchší príklad použitia funkcie v skriptovaní Bash možno uviesť ako –

Príklad skriptu:

#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction 

Výstup funkcií:

Hello World from techcodeview.com 

Vyššie uvedený príklad ukazuje funkciu, ktorá pri volaní niečo vypíše.

Takže základná syntax pre písanie funkcií v rámci Bash skriptu bude –

Syntax funkcií:

#for defining function_name(){ commands ..... } function_name # for calling 

Okrem toho môžeme mať aj funkcie s odovzdávaním argumentov a s návratovými hodnotami.

Rozhodovanie

V programovaní je rozhodovanie jedným z dôležitých pojmov. Programátor poskytuje jednu alebo viac podmienok na vykonanie bloku kódu. Ak sú splnené podmienky, vykoná sa iba tento blok kódov.

V rámci skriptovania shellu sa používajú dva typy rozhodovacích príkazov. Oni sú -

1. Ak je to iné vyhlásenie:

If else je podmienený príkaz. Môže sa použiť na vykonanie dvoch rôznych kódov podľa toho, či je daná podmienka splnená alebo nie.

V príkaze if-else je prítomných niekoľko odrôd. Oni sú -

  • ak-fi
  • ak-inak-fi
  • if-elif-else-fi
  • vnorené ak-iné

Syntax toho najjednoduchšieho bude –

Syntax príkazu If-else:

if [ expression ]; then statements fi 

Príklad skriptu:

Name='Satyajit' if [ '$Name' = 'Satyajit' ]; then echo 'His name is Satyajit. It is true.' fi 

Výstup príkazu if-else:

His name is Satyajit. It is true. 

Vo vyššie uvedenom príklade sa počas kontroly podmienky názov zhoduje a podmienka sa stane pravdivou. Preto sa vykoná blok kódu prítomný v bloku if. V prípade, že sa názov nezhoduje, nebude mať výstup. Nižšie je zobrazené zobrazenie shellu terminálu po vykonaní nasledujúceho skriptu –

2. case-sac vyhlásenie:

case-sac v podstate funguje rovnako ako príkaz switch v programovaní. Niekedy, ak musíme skontrolovať viacero podmienok, môže sa to skomplikovať pomocou príkazov if. V týchto chvíľach môžeme použiť vyhlásenie case-sac. Syntax bude -

Syntax príkazu case-sac:

case $var in Pattern 1) Statement 1;; Pattern n) Statement n;; esac 

Príklad skriptu:

Name='Satyajit' case '$Name' in #case 1 'Rajib') echo 'Profession : Software Engineer' ;; #case 2 'Vikas') echo 'Profession : Web Developer' ;; #case 3 'Satyajit') echo 'Profession : Technical Content Writer' ;; esac 

Výstup výpisu case-sac:

Profession : Technical Content Writer 

Vo vyššie uvedenom príklade príkaz case-sac vykonal príkaz, ktorý je súčasťou zhodného vzoru tu „Názov“. Nižšie je zobrazené zobrazenie shellu terminálu po vykonaní nasledujúceho skriptu –

Reťazcové a číselné porovnania

Porovnanie reťazcov znamená, že pri skriptovaní shellu môžeme robiť rozhodnutia aj porovnávaním v rámci reťazcov. Tu je popisná tabuľka so všetkými operátormi –

Operátor Popis
== Ak sú reťazce rovnaké, vráti hodnotu true
!= Ak sa reťazce nezhodujú, vráti hodnotu true
-n Vráti hodnotu true, ak reťazec, ktorý sa má testovať, nie je null
- S Vráti hodnotu true, ak má testovaný reťazec hodnotu null

Aritmetické operátory sa používajú na kontrolu aritmetických podmienok. Ako menej ako, väčšie ako, rovná sa atď. Tu je popisná tabuľka so všetkými operátormi –

Operátor Popis
-ekv Rovnaký
-ge Väčšie než alebo rovné
-gt Väčší než
- Menej ako alebo rovné
-lt Menej ako
- je Nerovná sa

Nižšie je uvedený jednoduchý príklad toho istého -

Príklad skriptu:

if [ 10 -eq 10 ];then echo 'Equal' fi if [ 'Geeks' == 'Geeks' ]; then echo 'same' #output else echo 'not same' fi 

Výstup reťazcových a číselných porovnaní:

Equal same 

V tomto príklade prvý (-eq) je číselné porovnanie, ktoré kontroluje rovnosť. Druhý ( == ) je tiež kontrola rovnosti, ale v reťazcoch. Nižšie je zobrazené zobrazenie shellu terminálu po vykonaní nasledujúceho skriptu –

Viac o tomto koncepte sa dozvieme v ďalších článkoch.

Záver

V tomto článku diskutujeme o skriptovaní Bash, ktoré hrá dôležitú úlohu pri automatizácii úloh v prostredí Linuxu. Ako tlmočník príkazového riadka ponúka Bash jednoduchosť a jednoduchosť použitia pre vývojárov na vytváranie skriptov, ktoré zjednodušujú rutinné operácie, manipulujú so súbormi a vykonávajú zložité úlohy. Zatiaľ čo skripty Bash môžu zvýšiť produktivitu tým, že sa vyhýbajú opakovaným akciám a efektívnemu vykonávaniu sekvencií príkazov, prichádzajú aj s úvahami, ako je správa povolení, manipulácia s premennými a implementácia rozhodovacích štruktúr. Vďaka zvládnutiu skriptovania Bash môžu používatelia využiť jeho výkon na optimalizáciu pracovného toku a zlepšenie úloh správy systému na platformách Linux.