Bash a strukturované programování (Lukáš Bařinka)
Obsah:
Funkce Bash je v podstatě soubor příkazů, které lze opakovaně nazvat. Účelem funkce je pomoci vám učinit vaše bash skripty srozumitelnější a vyhnout se opakovanému psaní stejného kódu.
Ve srovnání s většinou programovacích jazyků jsou funkce Bash poněkud omezené. V tomto tutoriálu se seznámíme se základy funkcí Bash a ukážeme vám, jak je používat ve skriptech shellu.
Deklarace funkce Bash
Syntaxe pro deklarování bash funkce je velmi jednoduchá. Mohou být deklarovány ve dvou různých formátech:
-
První formát začíná názvem funkce, za nímž následují závorky. Toto je preferovaný a více používaný formát.
function_name () { commands }
Jednořádková verze:
function_name () { commands; }
Druhý formát začíná slovem vyhrazeným pro
function
následovaným názvem funkce.function function_name { commands }
Jednořádková verze:
function function_name { commands; }
Je třeba poznamenat několik bodů:
- Seznam příkazů mezi složenými závorkami
{}
je tělem funkce. Kudrnaté složené závorky, které obklopují tělo funkce, musí být od těla odděleny mezerami nebo novými řádky. Definování funkce ji neprovede. Chcete-li vyvolat funkci bash, jednoduše použijte název funkce. Příkazy mezi složenými složenými závorkami jsou prováděny vždy, když je funkce vyvolána ve skriptu shellu. Definice funkce musí být umístěna před jakýmkoli voláním funkce. Při použití „kompaktních“ funkcí jedné řádky středník;
musí následovat poslední příkaz ve funkci. Vždy byste se měli snažit udržovat popisy názvů funkcí.
Chcete-li to lépe pochopit, podívejte se na následující příklad:
~ / hello_world.sh
#!/bin/bash hello_world () { echo 'hello, world' } hello_world
Pojďme analyzovat kód po řádku:
- V řádku
3
definujeme funkci tak, že jí dáme jméno, a otevřeme složenou závorku{
která označuje začátek těla funkce. Linka4
je funkční tělo. Tělo funkce může obsahovat více příkazů a deklarací proměnných.hello_world
5
, závorka sehello_world
závorkami}
, definuje konec funkcehello_world
řádku7
provádíme funkci. Tuto funkci můžete provádět tolikrát, kolikrát potřebujete.
Pokud spustíte skript, vytiskne ho
hello, world
.
Rozsah proměnných
Globální proměnné jsou proměnné, ke kterým lze přistupovat odkudkoli ve skriptu bez ohledu na rozsah. V Bash jsou všechny proměnné ve výchozím nastavení definovány jako globální, i když jsou deklarovány uvnitř funkce.
Lokální proměnné mohou být deklarovány v těle funkce pomocí
local
klíčového slova a mohou být použity pouze uvnitř této funkce. V různých funkcích můžete mít lokální proměnné se stejným názvem.
Abychom lépe ilustrovali, jak rozsah proměnných pracuje v Bash, podívejme se na příklad:
~ / variable_scope.sh
#!/bin/bash var1='A' var2='B' my_function () { local var1='C' var2='D' echo "Inside function: var1: $var1, var2: $var2" } echo "Before executing function: var1: $var1, var2: $var2" my_function echo "After executing function: var1: $var1, var2: $var2"
Skript začíná definováním dvou globálních proměnných
var1
a
var2
. Pak funkce, která nastaví lokální proměnnou
var1
a modifikuje globální proměnnou
var2
.
Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D
Z výše uvedeného výstupu můžeme usoudit, že:
- Pokud nastavíte lokální proměnnou uvnitř těla funkce se stejným názvem jako existující globální proměnná, bude mít přednost před globální proměnnou. Globální proměnné lze v rámci funkce změnit.
Návratové hodnoty
Na rozdíl od funkcí v „reálných“ programovacích jazycích vám funkce Bash neumožňuje vrátit při volání hodnotu. Po dokončení funkce bash je její vrácená hodnota stav posledního příkazu provedeného ve funkci,
0
pro úspěch a nenulové desetinné číslo v rozsahu 1 - 255 pro selhání.
Návratový stav lze určit pomocí
return
klíčového slova a je přiřazen k proměnné
$?
. Příkaz
return
ukončí funkci. Můžete to považovat za stav ukončení funkce.
#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?
some result 55
Abychom skutečně vrátili libovolnou hodnotu z funkce, musíme použít jiné metody. Nejjednodušší možností je přiřadit výsledek funkce globální proměnné:
~ / return_values.sh
#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result
some result
Další lepší možností vrácení hodnoty z funkce je odeslání hodnoty do
stdout
pomocí echo nebo
printf
jak je ukázáno níže:
#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result
some result
Namísto pouhého vykonání funkce, která vytiskne zprávu do stdout, přiřazujeme výstup funkce proměnné
func_result
pomocí substituce příkazu
$()
. Proměnnou lze později použít podle potřeby.
Předávání argumentů funkcím Bash
Chcete-li předat libovolný počet argumentů funkci bash, jednoduše je vložte hned za název funkce a oddělte je mezerou. Je dobrým zvykem argumenty dvojitě citovat, aby se zabránilo nesprávnému argumentaci s mezerami v něm.
- Předané parametry jsou
$1
,$2
,$3
…$n
, což odpovídá poloze parametru za názvem funkce. Proměnná$0
je vyhrazena pro název funkce. Proměnná$#
obsahuje počet pozičních parametrů / argumentů předaných do function.The proměnné$*
a$@
uchovávají všechny poziční parametry / argumenty předávané funkci.- Při dvojitém uvození se
"$*"
rozbalí na jediný řetězec oddělený mezerou (první znak IFS) -"$1 $2 $n"
. Když se dvojité uvozovky,"$@"
rozbalí na samostatné řetězce -"$1" "$2" "$n"
. Pokud není dvojnásobně citován,$*
a$@
jsou stejné.
- Při dvojitém uvození se
Zde je příklad:
~ / absolvování_arguments.sh
#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"
Závěr
Funkce Bash je blok opakovaně použitelného kódu navrženého k provedení určité operace. Jakmile je funkce definována, lze ji ve skriptu volat vícekrát.
Můžete si také přečíst informace o tom, jak pomocí funkce Bash vytvořit nezapomenutelný zkratkový příkaz pro delší příkaz.
bash terminálZdroje: Funkce rozhraní UI další funkce pro zlepšení relevance vyhledávání pro uživatele

Nový vyhledávač, který Microsoft očekává od tohoto týdne, se může pochlubit funkcemi pro zlepšení relevance výsledků vyhledávacích dotazů, a to částečně tím, že umožňuje uživatelům nastavit vlastní profilové informace, které motor používá k přizpůsobení výsledků. zdroje, které jsou obeznámeny s plány společnosti.
Funkce prevence spouštění dat nebo funkce DEP v systému Windows 10/8/7

Co je prevence spouštění dat nebo DEP? Jedná se o novou bezpečnostní funkci, která pomáhá zabránit poškození počítače se systémem Windows viry a dalšími bezpečnostními hrozbami.
Povolit mediální funkce a funkce v systémech Windows 7 N a Windows 7 Kn

Windows 7 KN nainstaluje přehrávač médií a související technologie do počítače se systémem Windows 7 N nebo Windows 7 KN edition