Skrypty Bash – Funkcje

Skrypty Bash – Funkcje

Skrypt Bash jest zwykłym plikiem tekstowym. Ten plik zawiera różne polecenia do wykonania krok po kroku. Polecenia te można zapisać bezpośrednio w wierszu poleceń, ale z punktu widzenia możliwości ponownego użycia przydatne jest przechowywanie wszystkich powiązanych ze sobą poleceń dotyczących konkretnego zadania w jednym pliku. Możemy użyć tego pliku do wykonania zestawu poleceń jeden lub więcej razy, zgodnie z naszymi wymaganiami.

W tym artykule omówimy użycie funkcji w ramach skryptów Bash.

W programowaniu funkcja to blok kodu, który wykonuje pewne zadania i można ją wywoływać wielokrotnie w celu wykonania zadań. Zapewnia modułowość programu i zmniejsza długość kodu. Najprostszy przykład użycia funkcji w skryptach Bash można podać jako –



Przykładowy skrypt:

#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction 

Wyjście:

Hello World from techcodeview.com 

Powyższy przykład pokazuje funkcję, która po wywołaniu wyświetla coś. Zatem podstawowa składnia pisania funkcji w skrypcie Bash będzie następująca

Składnia:

# for defining function_name(){ commands ..... } function_name # for calling 

Oprócz tego możemy mieć także funkcje z przekazywanymi argumentami i zwracającymi wartościami. Teraz je omówmy.

Funkcje z przekazującymi argumentami

Możemy dodać argumenty lub parametry do funkcji i przekazać za ich pomocą dane do funkcji, aby funkcja mogła działać z tymi danymi. W skryptach bash możemy użyć następującej składni do napisania funkcji z przekazującymi argumentami.

Składnia funkcji z przekazującymi argumentami:

#for defining function_name(){ ..... parameter_1 = $1 parameter_2 = $2 . . . parameter_n = $n .... commands ..... } #for calling function_name p1 p2 ....pn 

Możemy bezpośrednio przekazywać argumenty podczas wywoływania funkcji i uzyskać do nich dostęp za pomocą 1 $, 2 $….. $n w ramach funkcji. Zobaczmy przykład, aby lepiej to zrozumieć.

Przykład funkcji z przekazującymi argumentami:

#!/bin/bash add_two_num(){ local sum=$(($1+$2)) echo sum of $1 and $2 is $sum } add_two_num 2 3 

Dane wyjściowe funkcji z przekazywanymi argumentami:

sum of 2 and 3 is 5 

Powyżej znajduje się skrypt dodawania dwóch liczb. Tutaj podaliśmy 2 i 3 jako argumenty. Uzyskaliśmy do nich dostęp za pomocą funkcji $1 i $2, obliczyliśmy ich sumę i wydrukowaliśmy ją na terminalu. Poniżej przedstawiono powłokę terminala po wykonaniu skryptu –

Dane wyjściowe funkcji z przekazywanymi argumentami

Funkcje zwracające wartości

Wartość zwracana jest generowana i zwracana do metody wywołującej przez funkcję po zakończeniu jej wykonywania. Wartość zwracana może służyć do udostępniania wygenerowanego wyniku lub kodu stanu informującego o tym, czy dana funkcja została pomyślnie wykonana, czy nie. W skryptach Bash wartość zwracana jest przypisana do $? zmienny.

Przykład tego samego podano poniżej –

Przykład funkcji zwracających wartości:

#!/bin/bash myfun(){ return 7 } myfun echo The return value is $? 

Dane wyjściowe funkcji z wartościami zwracanymi:

The return value is 7 

Poniżej znajduje się wynik powłoki terminala po wykonaniu skryptu –

Dane wyjściowe funkcji z wartościami zwracanymi

Teraz zmodyfikujmy wcześniejszą sumę skryptu dwuliczbowego.

Zmodyfikowany kod:

#!/bin/bash myfun(){ return $(($1+$2)) } add_two_num 2 3 echo The sum is $? 

Dane wyjściowe zmodyfikowanego kodu:

The sum is 5 

Powyższy kod jest teraz przykładem użycia obu parametrów i wartości zwracanej w funkcji skryptu Bash.

Poniżej przedstawiono powłokę terminala po wykonaniu skryptu –

Dane wyjściowe zmodyfikowanego kodu

Zmienny zakres

Zakres w programie lub skrypcie to obszar, w którym występują zmienne. Jeśli zmienna jest zadeklarowana wewnątrz funkcji, to zazwyczaj jest to zmienna lokalna, a jeśli jest zadeklarowana na zewnątrz, jest to zmienna globalna. W przypadku skryptu bash koncepcja ta jest nieco inna, tutaj każda zmienna, niezależnie od tego, czy jest zapisana wewnątrz funkcji, czy domyślnie poza nią, jest zmienną globalną. Jeśli chcemy utworzyć zmienną lokalną, musimy użyć słowa kluczowego local.

Najlepszą praktyką jest zawsze używanie zmiennej lokalnej wewnątrz funkcji, aby uniknąć niepotrzebnego zamieszania.

Przykład tego samego podano poniżej –

Przykład zakresu zmiennej:

#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3' 

Dane wyjściowe zakresu zmiennej:

The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry 

W powyższym przykładzie zmienna var2 jest zmienną lokalną, więc gdy uzyskujemy do niej dostęp z funkcji, wszystko działa dobrze, ale gdy próbujemy uzyskać do niej dostęp poza funkcją, na wyjściu pojawia się pusty wynik.

Z drugiej strony, w przeciwieństwie do języków programowania, mimo że zmienna var3 jest zdefiniowana wewnątrz funkcji, nadal zachowuje się jak zmienna globalna i można uzyskać do niej dostęp poza funkcją. Poniżej przedstawiono powłokę terminala po wykonaniu skryptu –

Dane wyjściowe o zmiennym zakresie

Nadpisywanie poleceń

Możliwe jest posiadanie funkcji o tej samej nazwie co polecenie. Jest to pomocne, jeśli chcemy uruchomić polecenie z określonymi opcjami lub chcemy mieć jego niestandardową edycję.

Przykład tego samego podano poniżej –

Przykład poleceń nadrzędnych:

#!/bin/bash #overriding command echo(){ builtin echo 'The name is : $1' } echo 'Satyajit Ghosh' 

Dane wyjściowe poleceń nadrzędnych:

The name is : Satyajit Ghosh 

W tym przykładzie zastąpiliśmy Echo Komenda. Teraz przed wydrukowaniem danego ciągu dołącza do niego więcej słów, a następnie drukuje. Poniżej przedstawiono powłokę terminala po wykonaniu skryptu –

Dane wyjściowe poleceń nadrzędnych

Najpopularniejsze Artykuły

Kategoria

Ciekawe Artykuły