GNU/Linux >> Znalost Linux >  >> Linux

Jak definovat a používat funkce v Linux Shell Script

Funkce je opakovaně použitelný blok kódu. Často vkládáme opakovaný kód do funkce a voláme tuto funkci z různých míst. Knihovna je soubor funkcí. Můžeme definovat běžně používané funkce v knihovně a ostatní skripty je mohou používat bez duplikace kódu.

V tomto článku probereme více o funkcích a receptech. Pro účely předvedení budu používat Bourne Again SHell (Bash) na počítači Ubuntu.

Funkce volání

Volání funkce v Shell je úplně stejné jako volání jakéhokoli jiného příkazu. Pokud je například název vaší funkce my_func, lze ji spustit následovně:

$ my_func

Pokud nějaká funkce přijímá argumenty, lze je zadat z příkazového řádku následovně:

$ my_func arg1 arg2 arg3

Definování funkce

K definici funkce můžeme použít níže uvedenou syntaxi:

 function function_name {            Tělo funkce }

Tělo funkce může obsahovat jakýkoli platný příkaz, omezení smyčky, jinou funkci nebo skript. Nyní vytvoříme jednoduchou funkci, která zobrazí zprávu na obrazovce.

 funkce print_msg {       echo "Ahoj světe" }

Nyní spusťte tuto funkci:

 $ print_msg Ahoj, světe

Podle očekávání tato funkce zobrazí zprávu na obrazovce.

Ve výše uvedeném příkladu jsme vytvořili funkci přímo na terminálu. Tuto funkci můžeme uložit i do souboru. Níže uvedený příklad to demonstruje.

 #! /bin/bash funkce print_msg {       echo "Ahoj světe" } print_msg

Tuto funkci jsme definovali v function.sh soubor. Nyní spusťte tento skript:

 $ chmod +x function.sh $ ./function.sh Ahoj, světe

Pokud si všimnete, výše uvedený výstup je přesně totožný s předchozím.

Další informace o funkcích

V předchozí části jsme definovali velmi základní funkci. Při vývoji softwaru však potřebujeme pokročilejší funkce, které mohou přijímat různé parametry a návratové hodnoty. V této části si probereme takové funkce.

Předávání argumentů do funkce

Můžeme poskytnout argumenty, aby fungovaly stejně jako jiné příkazy. K těmto argumentům můžeme přistupovat z funkce pomocí symbolu dolaru ($). Například $1 představuje první argument, $2 představuje druhý argument a tak dále.

Upravme výše uvedenou funkci tak, aby přijala zprávu jako argument. Naše upravená funkce bude vypadat takto:

 funkce print_msg {       echo "Ahoj $1" }

Ve výše uvedené funkci přistupujeme k prvnímu argumentu pomocí $1. Proveďme tuto funkci:

 $ print_msg "LinuxTechi"

Když tuto funkci spustíte, vygeneruje následující výstup:

 Dobrý den, LinuxTechi

Vrácení hodnoty z funkce

Stejně jako ostatní programovací jazyky poskytuje Bash příkaz return, pomocí kterého můžeme vrátit hodnotu volajícímu. Pojďme to pochopit na příkladu:

function func_return_value {      return 10 }

Výše uvedená funkce vrací svému volajícímu hodnotu 10. Proveďme tuto funkci:

 $ func_return_value $ echo "Hodnota vrácená funkcí je:$?"

Když provedete výše uvedenou funkci, vygeneruje následující výstup:

 Hodnota vrácená funkcí je:10

POZNÁMKA: V bash musíme použít $? k zachycení návratové hodnoty funkce

Funkční receptury

Zatím jsme měli dobrou představu o bash funkcích. Nyní pojďme vytvořit několik užitečných bash funkcí, které nám mohou usnadnit život.

Protokol

Vytvořme funkci loggeru, která bude tisknout datum a čas spolu se zprávou protokolu.

 function log_msg {        echo "[`date '+ %F %T'` ]:[e-mail chráněn]“ }

Proveďme tuto funkci:

 $ log_msg "Toto je ukázková zpráva protokolu"

Když tuto funkci spustíte, vygeneruje následující výstup:

 [ 2018-08-16 19:56:34 ]:Toto je ukázková zpráva protokolu

Zobrazení systémových informací

Vytvořme funkci pro zobrazení informací o systému GNU/Linux

 funkce system_info {       echo "### Informace o operačním systému ###"       lsb_release -a       echo       echo "### Informace o procesoru ###"       procesor=`grep -wc "processor `gre" /proc  model `grep` /proc  -w "název modelu" /proc/cpuinfo  | awk -F:'{print $2}'`       echo "Procesor =$processor"       echo "Model     =$model"       echo       echo "### Informace o paměti ###"   m    celkem =`Total" / em " | awk '{print $2}'`       free=`grep -w "MemFree" /proc/meminfo | awk '{print $2}'`       echo "Celková paměť:$total kB"       echo "Volná paměť:$volná kB" }

Když provedete výše uvedenou funkci, vygeneruje následující výstup:

### Informace o operačním systému ###Nejsou dostupné žádné moduly LSB.ID distributora:           UbuntuDescription:   Ubuntu 18.04.1 LTSRease:         18.04Kódové jméno:    bionic### Informace o procesoru =  Del) Processor #1 Moe Core TM) i7-7700HQ CPU @ 2,80 GHz### Informace o paměti ###Celková paměť:4015648 kBVolná paměť:2915428 kB

Najít soubor nebo adresář z aktuálního adresáře

Níže uvedená funkce vyhledává soubor nebo adresář z aktuálního adresáře:

 funkce hledat {      najít . -name $1 }

Prohledejme adresář jmenovitě dir4 pomocí níže uvedeného příkazu:

 $ hledat dir4

Když provedete výše uvedený příkaz, vygeneruje následující výstup:

 ./dir1/dir2/dir3/dir4

Digitální hodiny

Níže uvedená funkce vytváří jednoduché digitální hodiny na terminálu

 funkce digital_clock {            clear             zatímco [ 1 ]             do                   datum +'%T'                                                                                                                        

Vytvoření knihovny

Knihovna je soubor funkcí. Chcete-li vytvořit knihovnu – definujte funkce v souboru a importujte tento soubor do aktuálního prostředí.

Předpokládejme, že jsme definovali všechny funkce v souboru utils.sh a poté použijte níže uvedený příkaz k importu funkcí v aktuálním prostředí:

zdroj $ utils.sh

Dále můžete spustit jakoukoli funkci z knihovny stejně jako jakýkoli jiný příkaz bash.

Závěr

V tomto článku jsme probrali několik užitečných receptů, které zlepší vaši produktivitu. Doufám, že vás tyto články inspirují k vytváření vlastních receptů.


Linux
  1. Jak používat šifrované heslo ve skriptu Linux Bash Shell

  2. Jak porovnávat čísla a řetězce ve skriptu Linux Shell

  3. Jak nainstalovat a používat Traceroute v Linuxu

  1. Co je příkaz Chown v Linuxu a jak jej používat

  2. Jak používat funkce shellu příkazového řádku v Linuxu

  3. Jak zkontrolovat, zda skupina existuje, a přidat, pokud ne, v Linux Shell Script

  1. Jak nainstalovat a používat telnet na Kali Linux

  2. Jak spustit příkaz / skript Linux Shell na pozadí

  3. Jak nainstalovat a používat Flatpak v Linuxu