Bash skriptování – funkce
Bash skript je prostý textový soubor. Tento soubor obsahuje různé příkazy pro provádění krok za krokem. Tyto příkazy lze zapsat přímo do příkazového řádku, ale z hlediska opětovné použitelnosti je užitečné uložit všechny vzájemně související příkazy pro konkrétní úlohu do jednoho souboru. Tento soubor můžeme použít pro provedení sady příkazů jednou nebo vícekrát podle našich požadavků.
Zde v tomto článku budeme diskutovat o použití funkcí v Bash Scripting.
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ů. Poskytuje modularitu v programu a snižuje délku kódu. Nejjednodušší příklad použití funkce ve skriptování Bash lze uvést jako –
Příklad skriptu:
#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction Výstup:
Hello World from techcodeview.com
Výše uvedený příklad ukazuje funkci, která při volání něco vypíše. Základní syntaxe pro zápis funkcí v rámci Bash skriptu tedy bude
Syntax:
# 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. Nyní je proberme.
Funkce s předáváním argumentů
K funkci můžeme přidat argumenty nebo parametry a předávat data pomocí nich funkci, aby funkce mohla s těmito daty jednat. Ve skriptování bash můžeme pro zápis funkce s předáváním argumentů použít následující syntaxi.
Syntaxe funkcí s předáváním argumentů:
#for defining function_name(){ ..... parameter_1 = $1 parameter_2 = $2 . . . parameter_n = $n .... commands ..... } #for calling function_name p1 p2 ....pn Argumenty můžeme předat přímo při volání funkce a můžeme k nim přistupovat pomocí $ 1, $ 2 …. $ n v rámci funkce. Podívejme se na příklad pro jasnější pochopení.
Příklad funkcí s předáváním argumentů:
#!/bin/bash add_two_num(){ local sum=$(($1+$2)) echo sum of $1 and $2 is $sum } add_two_num 2 3 Výstup funkcí s předávacími argumenty:
sum of 2 and 3 is 5
Nahoře je skript pro sčítání dvou čísel. Zde jsme uvedli 2 a 3 jako argumenty. Přistoupili jsme k nim pomocí $1 a $2 z funkce a vypočítali jejich součet a vytiskli jej na terminál. Níže je znázornění shellu terminálu po provedení skriptu –
Funkce s návratovými hodnotami
Funkce je vytvořena a vrácena volající metodě poté, co dokončí své provádění. Návratovou hodnotu lze použít ke sdílení vytvořeného výsledku nebo nějakého stavového kódu o tom, zda byla jedna funkce úspěšně provedena nebo ne. Ve skriptování Bash je návratová hodnota přiřazena k $? variabilní.
Stejný příklad je uveden níže –
Příklad funkcí s návratovými hodnotami:
#!/bin/bash myfun(){ return 7 } myfun echo The return value is $? Výstup funkcí s návratovými hodnotami:
The return value is 7
Níže je výstup shellu terminálu po provedení skriptu –
Nyní upravme dřívější součet dvoučíselného skriptu.
Upravený kód:
#!/bin/bash myfun(){ return $(($1+$2)) } add_two_num 2 3 echo The sum is $? Výstup upraveného kódu:
The sum is 5
Výše uvedený kód je nyní příkladem použití obou parametrů a návratové hodnoty ve funkci skriptu Bash.
Níže je znázornění shellu terminálu po provedení skriptu –
Variabilní rozsah
Rozsah v programu nebo skriptu je oblast, kde proměnné existují. Pokud je proměnná deklarována uvnitř funkce, pak je to obecně lokální proměnná a pokud je deklarována mimo, pak je to 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.
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 proměnného rozsahu:
#!/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 proměnného rozsahu:
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 –
Převažující příkazy
Je možné mít funkci se stejným názvem jako má příkaz. Je to užitečné, pokud chceme spustit příkaz se specifickými možnostmi nebo chceme mít jeho upravenou edici.
Stejný příklad je uveden níže –
Příklad přepisovacích příkazů:
#!/bin/bash #overriding command echo(){ builtin echo 'The name is : $1' } echo 'Satyajit Ghosh' Výstup přepisovacích příkazů:
The name is : Satyajit Ghosh
Zde v tomto příkladu jsme přepsali echo příkaz. Nyní před tiskem daného řetězce připojí k řetězci několik dalších slov a poté vytiskne. Níže je vyobrazení terminálového shellu po provedení skriptu –