Úvod do funkcí v unixu
V tomto článku se dozvíme o některých základních funkcích v Unixu. Mnozí z nás už možná věděli, jaké funkce jsou, ale dovolte mi o tom krátce představit. Funkce obsahuje sadu instrukcí, které mají být provedeny kódem napsaným uvnitř odsazeného bloku. Jsou to užitečné, když máme určitý úkol, který musí program provádět opakovaně v pravidelných časových intervalech. Psaní stejného kódu pokaždé se zjevně nedoporučuje, takže pomocí funkcí můžeme kód snadno znovu použít a volat kdykoli je to potřeba. Podívejme se nyní, jak můžeme tyto funkce definovat a implementovat skriptováním Unix Shell.
Syntaxe funkcí v Unixu
Vytváření funkcí následuje základní syntaktický kód následovně. Ukázkový příklad funkce.
Kód
First()
(
echo “ First Program for defining functions ”;
echo “ Yayyy! “;
)
Zde jsme v rámci naší první funkce napsali dvě prohlášení echo. Pro vyvolání funkce můžeme zavolat pouze podle názvu funkce.
Výstup
Předávání parametrů fungování v Unixu
Úspěšně jsme vytvořili jednoduchou funkci, nazvali ji a provedli příkazy, které jsme požadovali. Co když tedy musím přidat dvě čísla pomocí uživatelsky zadaných hodnot? Tady bychom tedy viděli, jak můžeme napsat funkci s argumenty. Základní syntaxe by byla stejná. Příklad parametrizované funkce
Kód
Second()
(
echo “Enter your name: “;
read name;
echo “Hi $name, have a good day”;
)
Výstup
Vyzve nás k zadání jména a přejeme jim
Stejným způsobem můžeme dokonce vytvořit soubor skriptu. Pojďme napsat přídavnou funkci uvnitř shellového skriptu a uvidíme, jak to funguje.
Kód
vi add.sh
echo “enter first number: “;
read a;
echo “enter the second number: “;
read b;
sum=$((a+b));
echo “ Result is $sum”;
*********************
Save the file with : wq!
Výstup
Poznámka: Někdy se při spuštění skriptu sh můžeme dostat chybu jako:
Jediné, co to musí udělat, je aktualizace oprávnění souboru.
Můžeme dokonce spustit soubor sh pomocí příkazu od. /add.sh
Stejným způsobem můžeme dokonce provést funkci poskytnutím argumentů příkazového řádku. Podívejme se, jak to můžeme dosáhnout přidáním tří čísel.
Kód
(
number1=$1;
number2=$2;
number3=$3;
sum=$((number1+number2+number3));
echo “Sum is $sum”;
)
Nyní můžeme předat naše čísla jako argumenty příkazového řádku a poté získat požadovaný výstup.
Co když funkci nepředáme žádné argumenty?
A pokud uvedeme pouze dva argumenty?
Jinak, můžeme projít struny?
Můžeme dokonce mít náš kód takovým způsobem, že při předání neplatných argumentů může zopakovat chybu. Níže uvádíme, jak můžeme uživatele požádat o zadání argumentů, pokud nebyly předány žádné argumenty příkazového řádku.
Kód
Add()
(
number1=$1;
number2=$2;
if ( $# -ne 2 ); then
echo “ Enter two numbers to add “;
fi
sum=$((number1+number2));
echo “ Sum is : $sum “;
)
Výstup
Pokud naší funkci nepředáme žádné argumenty, dává to naši ozvěnu, kde jsme požádali o zadání dvou čísel příkazového řádku a pak o výsledku součtu. Děje se tak, protože jsme neřekli funkci zastavit, pokud narazíme na chybu. Ve druhém případě můžeme vidět, že výstup dává součet správně, bez jakékoli střední echo. Můžeme dokonce použít příkazy návratu k vrácení hodnot pro tyto unixové funkce. Hodnota v příkazu return se ukládá do $?
Výstup
Jako cvičení můžete zkusit napsat funkci, která vypukne, pokud neprojdeme argumenty?
Vnořené funkce v unixu
Pojmenováním můžeme zjistit, že vnořené funkce jsou o definování funkce uvnitř funkce. Uvidíme, jak to můžeme udělat hned. Píšeme to uvnitř shellového skriptu pro snazší pochopení.
Kód
vi Nested_Function.sh
***** Code Inside the sh Function*******
#!/bin/sh
First()
(
echo “ Inside First Function “;
echo “ Calling the second function below “;
echo “**********”;
Second
echo “**********”;
echo “ After calling Second function “;
)
Second()
(
echo “ Inside Second Function”;
echo “ Done “;
)
First
************************
Save the file with : wq!
Výstup
Ve výše uvedeném příkladu jsme právě nazvali druhou funkci uvnitř první. Pojďme nyní napsat funkci pouze do první funkce.
Kód
vi Nest_Func1.sh
***** Code Inside the sh Function*******
First_One()
(
echo “ Inside the function First_One”;
echo “ Below is the inner function “;
Second_One()
(
echo “ ********** “;
echo “ Inside Inner function”;
echo “ Completed Second Function”;
echo “ ********** “;
)
echo “Done with second example too”;
)
First_One
Second_one
************************
Save the file with : wq!
Jaký výstup nyní očekáváte? Myslíte si, že by se zobrazily jak detaily první, tak druhé funkce?
Výstup
Vidíme jasně, že funkce nevolala vnitřní funkci uvnitř ní. Jaký je problém?
Uvnitř našeho skriptu jsme nazvali pouze první funkci. Nyní zkuste také volat druhou funkci. Jak jsme si všimli, zde nebudeme moci nazvat funkci samotnou. Ve výše uvedeném kódu jsme zvýraznili přidaný kód.
Výstup
Všimněte si, že ozvěna, kterou jsme psali po provedení druhé funkce, se dostala před sebe. Nyní, pokud se pokusíme zavolat druhou funkci jako první, následovanou první?
Výstup
Můžeme jasně pochopit, že dokud nezavoláme hlavní / první funkci, vnitřní funkce se nezvolává. Jako cvičení můžete vyzkoušet přidání dvou čísel pomocí vnořených funkcí? (Jeden pro zadání uživatelských hodnot a další pro přidání čísel)
Závěr
Takto můžeme definovat funkce v Unixu. A jednu hlavní výhodu v Unixu jsem našel v tom, že chyba ve výstupu může být snadno pochopitelná a může pomoci nápravu našeho kódu odpovídajícím způsobem. Zkuste tyto funkce spustit a použijte příkaz return. Mají šťastné učení v Unixu.
Doporučený článek
Toto byl průvodce funkcemi v Unixu. Zde diskutujeme úvod do funkcí v Unixu a různých typech funkcí spolu s vysvětlením syntaxe a podrobností. Další informace naleznete také v dalších navrhovaných článcích -
- Unixová architektura
- Příkazy Unix
- Použití Unixu
- Otázky na rozhovor UNIX
- Průvodce operátory Unix