Bash je interpret příkazového řádku nebo Unix Shell a je široce používán v operačním systému GNU/Linux. Napsal ji Brian Jhan Fox. Používá se jako výchozí přihlašovací shell pro většinu distribucí Linuxu. Skriptování se používá k automatizaci provádění úkolů, takže je lidé nemusí provádět jednotlivě. Bash skriptování je skvělý způsob, jak automatizovat různé typy úloh v systému. Vývojáři se mohou vyhnout provádění opakujících se úkolů pomocí bash skriptování.
Bash skriptování podporuje proměnné, podmíněné příkazy a smyčky stejně jako programovací jazyky. Níže jsou uvedeny některé aplikace Bash skriptů –
Obsah
- Aplikace Bash skriptů:
- Výhody Bash skriptů:
- Jak psát Bash skripty?
- Názvy souborů a oprávnění
- Proměnné
- Vstup a výstup
- Funkce
- Rozhodování
- Řetězcová a číselná srovnání
Aplikace Bash skriptů:
- Manipulace se soubory
- Provádění rutinních úloh, jako je operace zálohování
- Automatizace
Výhody použití Bash skriptů jsou uvedeny níže –
Výhody Bash skriptů:
- Je to jednoduché.
- Pomáhá vyhnout se opakujícím se úkolům
- Snadné použití
- Často prováděné úkoly lze automatizovat
- Sekvenci příkazů lze spustit jako jeden příkaz.
Nevýhody Bash skriptů jsou uvedeny níže –
Nevýhody Bash skriptů:
- Jakákoli chyba při psaní může být drahá.
- Pro téměř každý spuštěný příkaz shellu byl spuštěn nový proces
- Pomalá rychlost provádění
- Problémy s kompatibilitou mezi různými platformami
Jak psát Bash skripty?
Chcete-li napsat Bash Script, budeme postupovat podle kroků –
- Nejprve si vytvoříme soubor s příponou .sh.
- Dále si v něm zapíšeme bash skripty
- Poté mu poskytneme povolení k provedení.
K vytvoření a zápisu souboru s příponou .sh můžeme použít gedit textový editor. Příkaz k tomu bude –
můj flixer
gedit scriptname.sh>
První řádek našeho souboru skriptu bude –
#!/bin/bash>
To řekne systému, aby použil Bash pro spuštění. Pak můžeme psát vlastní skripty.
Pojďme si napsat jednoduchý skript, který vytiskne nějaké řádky v terminálu. Kód k tomu bude -
#!/bin/bash echo 'Hello, techcodeview.com'>
Nyní soubor uložíme a poskytneme mu oprávnění k provedení. Chcete-li to provést, použijte následující příkaz -
chmod +x scriptname.sh>
Dále ke spuštění následujícího skriptu použijeme následující příkaz –
./scriptname.sh>
Zde je obrázkové zobrazení shellu terminálu po provedení výše uvedených příkazů takto:
Zde je název souboru skriptu gfg.sh.
Nyní můžeme také psát složitější příkazy pomocí skriptů Bash. Zde je příklad níže, ve kterém používáme příkaz podmínky –
Příklad skriptu:
#!/bin/bash Age=17 if [ '$Age' -ge 18 ]; then echo 'You can vote' else echo 'You cannot vote' fi>
Výstup:
You cannot vote>
Zde je obrázkové zobrazení shellu terminálu po provedení výše uvedeného skriptu takto:
Výše uvedeným způsobem můžeme provádět více příkazů Bash najednou.
Nyní se podívejme na další důležité koncepty související s Bash Scripting.
Názvy souborů a oprávnění
Ve výše uvedeném příkladu jsme soubor uložili pomocí gfg.sh jméno a také poskytnuté oprávnění ke spuštění pomocí chmod příkaz. Nyní pochopme, proč jsme to udělali.
Při psaní bash skriptů bychom měli náš soubor uložit s příponou .sh, aby jej systém Linux mohl spustit. Když poprvé vytvoříme soubor s příponou .sh, nemá žádné oprávnění ke spuštění a bez oprávnění ke spuštění nebude skript fungovat. Měli bychom tedy poskytnout oprávnění ke spuštění pomocí chmod příkaz.
Název souboru bash skriptu může být jakýkoli, ale podle konvence se pro pojmenování souboru skriptu doporučuje použít hadí velikost písmen ( my_bash_script.sh ) nebo pomlčky ( my-bash-script.sh ).
fronta v Javě
Proměnné
Proměnné můžeme použít ve skriptování bash. Níže je ukázkový program pro pochopení použití proměnných ve skriptech Bash.
Příklad skriptu:
Name='SATYAJIT GHOSH' Age=20 echo 'The name is $Name and Age is $Age'>
Výstup proměnných:
The name is SATYAJIT GHOSH and Age is 20>
Zde jsou tedy deklarovány dvě proměnné název a další je Stáří. Tyto proměnné jsou přístupné pomocí $Name a $Age. To znamená, že můžeme deklarovat proměnnou v bash skriptu pomocí Název proměnné=Hodnota a může k němu přistupovat pomocí $VariableName. Zde je obrázkové zobrazení shellu terminálu po provedení výše uvedeného skriptu takto:
V rámci skriptování Bash existují dva typy proměnných. Obvykle, pokud je proměnná deklarována uvnitř funkce, pak je to obecně a lokální proměnná a pokud je deklarován venku, pak je to a globální proměnná . V případě bash skriptu je tento koncept trochu jiný, zde je globální proměnnou jakákoli proměnná, ať už je standardně zapsána uvnitř funkce nebo mimo funkci. Pokud chceme vytvořit lokální proměnnou, musíme použít klíčové slovo local.
Poznámka: Nejlepším postupem je vždy používat lokální proměnnou uvnitř funkce, aby se předešlo zbytečným nejasnostem.
Stejný příklad je uveden níže –
Pří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álních a globálních proměnný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>
Zde v tomto výše uvedeném příkladu je var2 lokální proměnná, takže když k ní přistupujeme z funkce, jde to dobře, ale když se k ní pokoušíme přistupovat mimo funkci, dává nám na výstupu prázdný výsledek.
Na druhou stranu, na rozdíl od programovacích jazyků, i když je var3 definován uvnitř funkce, stále funguje jako globální proměnná a lze k ní přistupovat mimo funkci. Níže je vyobrazení terminálového shellu po provedení skriptu –
Vstup a výstup
Vstup a výstup jsou základní pojmy pro skriptování shellu. Skript může mít jeden nebo více vstupů a může také vytvářet nula nebo mnoho výstupů. Může dokonce způsobit nějaké chyby. Pochopme to na příkladu –
Příklad skriptu:
echo 'Enter filename' read filename if [ -e $filename ] then echo '$filename is exits on the directory' cat $filename else cat>$filename echo 'Soubor vytvořen' fi>
Výstup vstupu a výstupu:
Poprvé:
Enter filename geeks.txt Hello Geek File created>
Podruhé:
Enter filename geeks.txt geeks.txt is exits on the directory Hello Geek>
Takže v tomto výše uvedeném příkladu poprvé nemohl skript najít žádný soubor s tímto názvem souboru a spustí se blok else. Vytvořil soubor a vložil do něj některá data. Když jej spustíme podruhé se stejným názvem souboru, pak soubor najde. Je tedy spuštěn blok if a zobrazí se obsah souboru. Čtení obsahu souboru je vstup a první vložení dat do souboru se považuje za výstup. Zde jsme použili > pro uložení obsahu do souboru. The > zápis se používá k přesměrování stdout do souboru. Na druhou stranu můžeme použít 2> notace pro přesměrování stderr a &> k přesměrování stdout i stderr.
Níže je obrázkové zobrazení shellu terminálu po provedení následujícího skriptu –
Funkce
V programování je funkce blok kódu, který provádí některé úkoly a může být volán vícekrát pro provádění úkolů. Nejjednodušší příklad použití funkce ve skriptování Bash lze uvést jako –
řetězec na jsonobject
Příklad skriptu:
#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction> Výstup funkcí:
Hello World from techcodeview.com>
Výše uvedený příklad ukazuje funkci, která při volání něco vypíše.
Takže základní syntaxe pro zápis funkcí v Bash skriptu bude –
Syntaxe funkcí:
#for defining function_name(){ commands ..... } function_name # for calling> Kromě toho můžeme mít také funkce s předáváním argumentů a s návratovými hodnotami.
Rozhodování
V programování je rozhodování jedním z důležitých pojmů. Programátor poskytuje jednu nebo více podmínek pro provedení bloku kódu. Pokud jsou podmínky splněny, provede se pouze tento blok kódů.
V rámci skriptování shellu se používají dva typy rozhodovacích příkazů. Oni jsou -
1. Prohlášení If- else:
If else je podmíněný příkaz. Lze jej použít ke spuštění dvou různých kódů podle toho, zda je daná podmínka splněna či nikoliv.
V příkazu if-else je přítomno několik odrůd. Oni jsou -
- pokud-fi
- pokud-jinak-fi
- if-elif-else-fi
- vnořeno if-else
Syntaxe toho nejjednoduššího bude –
Syntaxe příkazu If-else:
if [ expression ]; then statements fi>
Příklad skriptu:
Name='Satyajit' if [ '$Name' = 'Satyajit' ]; then echo 'His name is Satyajit. It is true.' fi>
Výstup příkazu if-else:
His name is Satyajit. It is true.>
Ve výše uvedeném příkladu se během kontroly podmínky název shoduje a podmínka se stane pravdivou. Blok kódu přítomný v bloku if se tedy provede. V případě, že se název neshoduje, nebude mít výstup. Níže je obrázkové zobrazení shellu terminálu po provedení následujícího skriptu –
2. prohlášení case-sac:
case-sac v podstatě funguje stejně jako příkaz switch v programování. Někdy, když musíme zkontrolovat více podmínek, může se to komplikovat pomocí příkazů if. V těchto chvílích můžeme použít příkaz case-sac. Syntaxe bude –
Syntaxe příkazu case-sac:
case $var in Pattern 1) Statement 1;; Pattern n) Statement n;; esac>
Pří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 příkazu case-sac:
Profession : Technical Content Writer>
Ve výše uvedeném příkladu provedl příkaz case-sac příkaz, který je součástí shodného vzoru zde ‚Name‘. Níže je obrázkové zobrazení shellu terminálu po provedení následujícího skriptu –
Řetězcová a číselná srovnání
Porovnání řetězců znamená, že ve skriptování shellu můžeme přijímat rozhodnutí tím, že porovnáváme také v řetězcích. Zde je popisná tabulka se všemi operátory –
| Operátor | Popis |
|---|---|
| == | Vrátí hodnotu true, pokud jsou řetězce stejné |
| != | Vrátí hodnotu true, pokud se řetězce nerovnají |
| -n | Vrátí hodnotu true, pokud testovaný řetězec není null |
| -S | Vrátí hodnotu true, pokud má testovaný řetězec hodnotu null |
Aritmetické operátory se používají pro kontrolu aritmetických podmínek. Jako menší než, větší než, rovná se atd. Zde je popisná tabulka se všemi operátory –
| Operátor | Popis |
|---|---|
| -ekv | Rovnat se |
| -ge | Větší než nebo rovno |
| -gt | Větší než |
| - | Menší než nebo rovno |
| -lt | Méně než |
| - je | Nerovná se |
Níže je uveden jednoduchý příklad téhož –
Příklad skriptu:
if [ 10 -eq 10 ];then echo 'Equal' fi if [ 'Geeks' == 'Geeks' ]; then echo 'same' #output else echo 'not same' fi>
Výstup řetězcových a číselných srovnání:
návrhové vzory v jazyce Java
Equal same>
V tomto příkladu je první (-eq) numerické srovnání, které kontroluje rovnost. Druhý ( == ) je také kontrola rovnosti, ale v řetězcích. Níže je obrázkové zobrazení shellu terminálu po provedení následujícího skriptu –

Více se o tomto konceptu dozvíme v dalších článcích.
Závěr
V tomto článku diskutujeme o skriptování Bash, které hraje zásadní roli při automatizaci úloh v prostředí Linuxu. Jako interpret příkazového řádku nabízí Bash vývojářům jednoduchost a snadné použití k vytváření skriptů, které zjednodušují rutinní operace, manipulují se soubory a provádějí složité úkoly. Zatímco skripty Bash mohou zvýšit produktivitu tím, že se vyhýbají opakovaným akcím a efektivně provádějí sekvence příkazů, přicházejí s nimi také úvahy, jako je správa oprávnění, manipulace s proměnnými a implementace rozhodovacích struktur. Zvládnutím skriptování Bash mohou uživatelé využít jeho sílu k optimalizaci pracovního postupu a vylepšení úloh správy systému na platformách Linux.