Funkce v Unixu Různé typy funkcí v Unixu se syntaxí

Obsah:

Anonim

Ú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 -

  1. Unixová architektura
  2. Příkazy Unix
  3. Použití Unixu
  4. Otázky na rozhovor UNIX
  5. Průvodce operátory Unix