Rychlý průvodce, jak vytvářet a volat funkce v Bash.
Funkce je blok opakovaně použitelného kódu, který se používá k provedení nějaké akce. S funkcemi získáme lepší modularitu a vysoký stupeň opětovného použití kódu.
Bash poskytuje některé vestavěné funkce, jako je echo
a read
, ale můžeme také vytvářet vlastní funkce.
Vytvoření funkce v Bash
Existují dva způsoby, jak můžeme v Bash vytvářet funkce:
Jedním ze způsobů je použít pouze název funkce, např.:
functionName(){
// scope of function
}
Kompaktní verze:
functionName(){ echo "hello"; }
Dalším způsobem je deklarovat funkci pomocí function
klíčové slovo:
function functionName {
// scope of function
}
Kompaktní verze:
function functionName { echo "hello"; }
Všimněte si, že nepotřebujeme ()
při použití function
klíčové slovo pro vytvoření funkce.
Důležité body k poznámce o funkcích Bash:
- Kód mezi složenými závorkami
{}
je tělo a rozsah funkce - Při volání funkce používáme pouze název funkce odkudkoli ve skriptu bash
- Před použitím musí být funkce definována
- Při použití kompaktní verze musí mít poslední příkaz středník
;
Příklad:
Následující kód vytvoří funkci, která vytiskne „Hello World“ do konzole. Název funkce se nazývá printHello :
#!/bin/bash
printHello(){
echo "Hello World!"
}
Volání funkce v Bash
Jak nazýváme výše uvedenou funkci? Vše, co musíte udělat ve vašem bash skriptu, je napsat název funkce a ta se zavolá.
Například:
#!/bin/bash
printHello(){
echo "Hello World!"
}
# Call printHello function from anywhere in the script by writing the name
printHello
Výstup:
"Hello World"
Předávání argumentů
Výše uvedená funkce printHello()
nemá žádné parametry. Kdykoli to zavoláme, dostaneme výstup „Ahoj světe“. Ale co kdybychom chtěli vytvořit obecnější funkci? Například můžeme zavolat funkci s nějakým argumentem a ona vypíše, co jí pošleme.
Existují dva způsoby, jak to udělat.
Nejprve můžeme upravit printHello()
funkce pro tisk argumentů, které jsou jí předány:
Například:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny World
printAny DevQa
printAny I love coding!
Výstup:
Hello World
Hello DevQA
Hello I
Všimněte si, jak třetí tiskový příkaz printAny I love coding!
vypsal pouze „Ahoj, já“.
Je to proto, že naše funkce je navržena tak, aby přijala pouze 1 parametr $1
. Slovo "Miluji kódování!" jsou ve skutečnosti 3 parametry.
Pokud bychom to chtěli vše vytisknout, museli bychom kolem textu umístit uvozovky
Například:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny "I love coding!"
Výstup:
Hello I love coding
Další příklad, můžeme předat také číslice:
#!/bin/bash
add() {
result=$(($1 + $2))
echo "Result is: $result"
}
add 1 2
Výstup:
Result is: 3
Vrácené hodnoty
Funkce Bash mohou také vracet hodnoty.
Například:
#!/bin/bash
add() {
result=$(($1 + $2))
}
add 1 2
echo "The sum is: "$result
Výstup:
The sum is: 3
Dalším způsobem, jak vrátit hodnoty z funkce, je přiřadit výsledek proměnné, kterou lze použít podle potřeby.
Například:
#!/bin/bash
add () {
local result=$(($1 + $2))
echo "$result"
}
result="$(add 1 2)"
echo "The sum is: "$result
Výstup:
The sum is: 3