Funkce

Stránky: E-learning VŠCHT Praha
Kurz: Linux, shell
Kniha: Funkce
Vytiskl(a): Nepřihlášený host
Datum: čtvrtek, 4. července 2024, 10.29

1. Funkce

Funkcí se rozumí samostatná část programu, která má své vlastní jméno a vykonává dílčí specifickou činnost. Funkce po zpracování dat a příkazů obvykle vrací hodnotu.

1.1. Pravidla

Definice funkcí musí splňovat několik pravidel.

  • Funkce musí být nadefinována dříve než před jejím prvním voláním.
  • Funkce musí obsahovat alespoň jeden příkaz. Tuto minimální podmínku lze splnit použitím příkazu return. Použití příkazu return ovšem není povinné.

1.2. Syntaxe

V shellu je možné použít dva formáty syntaxe pro definici funkce. Oba dva formáty jsou zcela rovnocenné a nemají žádný vliv na provádění funkcí.

Tradiční syntaxe

function jméno {

příkaz

...

}

Tradiční formát využívá pro definici funkce klíčového slova function, následuje jméno funkce a mezi složené závorky se zapisují příkazy, které se mají vykonat.


Moderní syntaxe

jméno () {

příkaz

...

}

Definice funkce pomocí moderního formátu začíná jménem funkce, následují kulaté závorky, které nahrazují klíčové slovo function, a mezi složené závorky se zapisují příkazy, které se mají vykonat.


1.3. Exit status

Funkce jsou v shellu vnímány jako miniskripty, tedy vrací také exit status. Pokud se ve funkci nevyužije příkaz return, vrací exit status naposledy použitého příkazu. Ten lze zjistit příkazem $?.


S využitím příkazu return lze vrátit libovolné číslo z rozsahu 0 - 255.


Pokud by byla hodnota předaná příkazu return větší než 255, příkaz vždy vrátí zbytek po dělení číslem 256. Tedy takové číslo, aby bylo zachováno pravidlo, že návratová hodnota musí být z rozsahu 0 - 255.



1.4. Proměnné

Pro zpracování hodnot ve funkcích lze použít dva typy proměnných, globální a lokální.


Globální

Za globální proměnné jsou považovány všechny proměnné prostředí a proměnné definované kdekoliv ve skriptu, tedy ve funkcích či mimo ně.



Lokální

Za lokální proměnné jsou považovány takové, jejichž definici předchází příkaz local. Lokální proměnná je platná pouze uvnitř funkce. Pokud existuje globální proměnná stejného jména, její hodnota se nezmění.



1.5. Argumenty

Co se týká argumentů funkcí, platí pro ně stejná pravidla jako pro argumenty skriptů. Argumenty jsou uloženy postupně jak byly předány funkci v proměnných $1, ..., ${10}, ... Počet argumentů je uložen v proměnné $#.