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 -
- Architektura uniksowa
- Polecenia uniksowe
- Zastosowania Uniksa
- Pytania do wywiadu UNIX
- Przewodnik po operatorach Uniksa