Funkcje w Uniksie - Różne typy funkcji w Uniksie ze składnią

Spisie treści:

Anonim

Wprowadzenie do funkcji w Uniksie

W tym artykule dowiemy się o kilku podstawowych funkcjach w Uniksie. Wielu z nas mogło już wiedzieć, jakie są Funkcje, ale pozwólcie, że przedstawię krótkie wprowadzenie na ten temat. Funkcja zawiera zestaw instrukcji do wykonania przez kod zapisany w wciętym bloku. Są one przydatne, gdy mamy pewne zadanie, które program musi wykonywać wielokrotnie w regularnych odstępach czasu. Oczywiście, pisanie tego samego kodu za każdym razem nie jest zalecane, więc korzystając z funkcji, możemy z łatwością ponownie użyć kodu i wywołać go w dowolnym momencie. Zobaczmy teraz, jak możemy zdefiniować i wdrożyć te funkcje za pomocą skryptów powłoki Unix.

Składnia funkcji w systemie Unix

Tworzenie funkcji odbywa się zgodnie z podstawowym kodem składni w następujący sposób. Przykładowy przykład funkcji.

Kod

First()
(
echo “ First Program for defining functions ”;
echo “ Yayyy! “;
)

Tutaj napisaliśmy dwie instrukcje echa w naszej Pierwszej Funkcji. Aby wywołać funkcję, możemy po prostu wywołać nazwę funkcji.

Wynik

Przekazywanie parametrów do funkcji w Uniksie

Z powodzeniem stworzyliśmy prostą funkcję, nazwaliśmy ją i wykonaliśmy wymagane polecenia. Co teraz, jeśli muszę dodać dwie liczby za pomocą wartości wprowadzonych przez użytkownika? Tutaj zobaczymy, jak możemy napisać funkcję z argumentami. Podstawowa składnia byłaby taka sama. Przykład sparametryzowanej funkcji

Kod

Second()
(
echo “Enter your name: “;
read name;
echo “Hi $name, have a good day”;
)

Wynik

Poprosi nas o podanie imienia i życzenia

W ten sam sposób możemy nawet utworzyć plik skryptu. Napiszmy dodatkową funkcję w skrypcie powłoki i zobaczmy, jak to działa.

Kod

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!

Wynik

Uwaga: Czasami podczas wykonywania skryptu sh możemy otrzymać błąd:

Jedyne, co należy tutaj zrobić, to zaktualizować uprawnienia do plików.

Możemy nawet wykonać plik sh za pomocą polecenia by. /add.sh

W ten sam sposób możemy nawet wykonać funkcję, podając argumenty wiersza poleceń. Zobaczmy więc, jak możemy to zrobić poprzez dodanie trzech liczb.

Kod

(
number1=$1;
number2=$2;
number3=$3;
sum=$((number1+number2+number3));
echo “Sum is $sum”;
)

Teraz możemy przekazać nasze liczby jako argumenty wiersza poleceń, a następnie uzyskać wymagane dane wyjściowe.

Co jeśli nie przekażemy żadnych argumentów funkcji?

A jeśli podamy tylko dwa argumenty?

W przeciwnym razie możemy przekazać ciągi znaków?

Możemy nawet mieć nasz kod w taki sposób, aby mógł przekazywać błąd, gdy przekazywane są nieprawidłowe argumenty. Poniżej zobaczmy, jak możemy poprosić użytkownika o wprowadzenie argumentów, jeśli nie przekazano argumentów wiersza polecenia.

Kod

Add()
(
number1=$1;
number2=$2;
if ( $# -ne 2 ); then
echo “ Enter two numbers to add “;
fi
sum=$((number1+number2));
echo “ Sum is : $sum “;
)

Wynik

Jeśli nie przekażemy żadnych argumentów do naszej funkcji, daje to echo tam, gdzie poprosiliśmy o podanie dwóch liczb wiersza poleceń, a następnie podanie wyniku sumy. Dzieje się tak, ponieważ nie powiedzieliśmy funkcji zatrzymania, jeśli napotkamy błąd. W drugim przypadku możemy zobaczyć, że dane wyjściowe dają sumę poprawnie, bez pośredniego echa. Możemy nawet używać komend return w celu zwracania wartości dla tych funkcji uniksowych. Wartość w instrukcji return jest przechowywana w $?

Wynik

Czy jako ćwiczenie możesz spróbować napisać funkcję, która zadziała, jeśli nie przekażemy argumentów?

Funkcje zagnieżdżone w Uniksie

Poprzez nazewnictwo możemy dowiedzieć się, że Zagnieżdżone Funkcje dotyczą definiowania funkcji wewnątrz Funkcji. Zobaczmy, jak możemy to teraz zrobić. Piszemy to w skrypcie powłoki dla łatwiejszego zrozumienia.

Kod

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!

Wynik

W powyższym przykładzie właśnie wywołaliśmy drugą funkcję wewnątrz pierwszej. Napiszmy teraz funkcję tylko wewnątrz pierwszej funkcji.

Kod

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!

A czego oczekujesz? Czy uważasz, że zostaną wyświetlone zarówno szczegóły pierwszej, jak i drugiej funkcji?

Wynik

Możemy wyraźnie zobaczyć, że Funkcja nie wywołała wewnętrznej funkcji w jej wnętrzu. Więc w czym jest problem?

W naszym skrypcie wywołaliśmy tylko pierwszą funkcję. Teraz spróbuj wywołać także drugą funkcję. Jak zaobserwowano, tutaj nie będziemy w stanie wywołać funkcji samodzielnie. W powyższym kodzie wyróżniliśmy dodany kod.

Wynik

Zauważ, że echo, które napisaliśmy po wykonaniu Drugiej Funkcji, pojawiło się przed sobą. Teraz, jeśli najpierw spróbujemy wywołać drugą funkcję, a następnie pierwszą?

Wynik

Możemy jasno zrozumieć, że dopóki nie zostanie wywołana funkcja główna / pierwsza, funkcja wewnętrzna nie będzie wywoływana. Czy w ramach ćwiczenia możesz wypróbować dodanie dwóch liczb za pomocą funkcji zagnieżdżonych? (Jeden do wprowadzania wartości użytkownika i inni do dodawania liczb)

Wniosek

W ten sposób możemy zdefiniować Funkcje w Uniksie. Jedną z głównych zalet Uniksa, którą znalazłem, był błąd w danych wyjściowych, który można łatwo zrozumieć i pomóc odpowiednio skorygować nasz kod. Spróbuj wykonać te funkcje i użyj polecenia return. Miłej nauki w Uniksie.

Polecany artykuł

To był przewodnik po funkcjach w Uniksie. Tutaj omawiamy wprowadzenie do Funkcji w Uniksie i różne typy funkcji wraz ze składnią i szczegółowym wyjaśnieniem. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Architektura uniksowa
  2. Polecenia uniksowe
  3. Zastosowania Uniksa
  4. Pytania do wywiadu UNIX
  5. Przewodnik po operatorach Uniksa