logo

Funkcje Basha

W tym temacie zademonstrowaliśmy podstawy funkcji bash i ich działanie w skryptach powłoki bash.

Funkcje w skryptach bash są świetną opcją ponownego wykorzystania kodu. Funkcję Bash można zdefiniować jako zestaw poleceń, które można wywołać kilka razy w skrypcie bash. Celem funkcji w bashu jest pomoc w uczynieniu skryptów bardziej czytelnymi i uniknięcie ciągłego pisania tego samego kodu. Umożliwia także programistom podzielenie skomplikowanego i długiego kodu na małe części, które można wywołać w razie potrzeby. Funkcje można wywoływać w dowolnym momencie i wielokrotnie, co umożliwi nam ponowne wykorzystanie, optymalizację i minimalizację kodu.

Poniżej przedstawiono kilka kluczowych punktów dotyczących funkcji bash:

  • Funkcja musi zostać zadeklarowana w skrypcie powłoki, zanim będziemy mogli z niej skorzystać.
  • Argumenty mogą być przekazywane do funkcji i dostępne wewnątrz funkcji jako , itd.
  • W obrębie funkcji można przypisać zmienne lokalne, a zakresem takich zmiennych będzie tylko ta konkretna funkcja.
  • Wbudowane polecenia powłoki Bash można zastąpić za pomocą funkcji.

Składnia

Składnię deklarowania funkcji bash można zdefiniować w dwóch formatach:

1. Pierwsza metoda rozpoczyna się od nazwy funkcji, po której następuje nawias. Jest to najbardziej preferowana i powszechnie stosowana metoda:

 function_name () { commands } 

Wersję jednoliniową można wymienić jak poniżej:

 function_name () { commands; } 

2. Druga metoda rozpoczyna się od słowa zastrzeżonego funkcji, po którym następuje nazwa funkcji:

iteracja listy w Javie
 function function_name { commands } 

Wersję jednoliniową można wymienić jak poniżej:

 function function_name { commands; } 

W porównaniu do większości języków programowania, funkcje Bash są nieco ograniczone. Zrozummy tę koncepcję za pomocą kilku przykładów:

Przykład: Metoda 1

 #!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP 

Wyjście

 Welcome to Javatpoint. 

Przykład: Metoda 2

 #!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP 

Wyjście

 Welcome to Javatpoint. 

Przekazywanie argumentów

Podobnie jak większość języków programowania, możemy również przekazywać argumenty i przetwarzać dane w funkcjach bash. Dane do funkcji możemy wstawić w podobny sposób, jak przekazujemy argumenty wiersza poleceń do skryptu bash.

co to jest const w Javie

Aby przekazać do funkcji bash dowolną liczbę argumentów, należy je wstawić tuż po nazwie funkcji. Musimy zastosować spacje pomiędzy nazwą funkcji a argumentami. Świetnym rozwiązaniem będzie także umieszczenie argumentów w cudzysłowie, aby zapobiec błędnej analizie argumentów zawierających spacje.

Poniżej przedstawiono kilka kluczowych punktów dotyczących przekazywania argumentów do funkcji bash:

  • Podane argumenty są dostępne jako , , ... $n, co odpowiada pozycji argumentów po nazwie funkcji.
  • Zmienna

    W tym temacie zademonstrowaliśmy podstawy funkcji bash i ich działanie w skryptach powłoki bash.

    Funkcje w skryptach bash są świetną opcją ponownego wykorzystania kodu. Funkcję Bash można zdefiniować jako zestaw poleceń, które można wywołać kilka razy w skrypcie bash. Celem funkcji w bashu jest pomoc w uczynieniu skryptów bardziej czytelnymi i uniknięcie ciągłego pisania tego samego kodu. Umożliwia także programistom podzielenie skomplikowanego i długiego kodu na małe części, które można wywołać w razie potrzeby. Funkcje można wywoływać w dowolnym momencie i wielokrotnie, co umożliwi nam ponowne wykorzystanie, optymalizację i minimalizację kodu.

    Poniżej przedstawiono kilka kluczowych punktów dotyczących funkcji bash:

    • Funkcja musi zostać zadeklarowana w skrypcie powłoki, zanim będziemy mogli z niej skorzystać.
    • Argumenty mogą być przekazywane do funkcji i dostępne wewnątrz funkcji jako $1, $2 itd.
    • W obrębie funkcji można przypisać zmienne lokalne, a zakresem takich zmiennych będzie tylko ta konkretna funkcja.
    • Wbudowane polecenia powłoki Bash można zastąpić za pomocą funkcji.

    Składnia

    Składnię deklarowania funkcji bash można zdefiniować w dwóch formatach:

    1. Pierwsza metoda rozpoczyna się od nazwy funkcji, po której następuje nawias. Jest to najbardziej preferowana i powszechnie stosowana metoda:

     function_name () { commands } 

    Wersję jednoliniową można wymienić jak poniżej:

     function_name () { commands; } 

    2. Druga metoda rozpoczyna się od słowa zastrzeżonego funkcji, po którym następuje nazwa funkcji:

     function function_name { commands } 

    Wersję jednoliniową można wymienić jak poniżej:

     function function_name { commands; } 

    W porównaniu do większości języków programowania, funkcje Bash są nieco ograniczone. Zrozummy tę koncepcję za pomocą kilku przykładów:

    Przykład: Metoda 1

     #!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP 

    Wyjście

     Welcome to Javatpoint. 

    Przykład: Metoda 2

     #!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP 

    Wyjście

     Welcome to Javatpoint. 

    Przekazywanie argumentów

    Podobnie jak większość języków programowania, możemy również przekazywać argumenty i przetwarzać dane w funkcjach bash. Dane do funkcji możemy wstawić w podobny sposób, jak przekazujemy argumenty wiersza poleceń do skryptu bash.

    Aby przekazać do funkcji bash dowolną liczbę argumentów, należy je wstawić tuż po nazwie funkcji. Musimy zastosować spacje pomiędzy nazwą funkcji a argumentami. Świetnym rozwiązaniem będzie także umieszczenie argumentów w cudzysłowie, aby zapobiec błędnej analizie argumentów zawierających spacje.

    Poniżej przedstawiono kilka kluczowych punktów dotyczących przekazywania argumentów do funkcji bash:

    • Podane argumenty są dostępne jako $1, $2, $3 ... $n, co odpowiada pozycji argumentów po nazwie funkcji.
    • Zmienna $0 jest zarezerwowana dla nazwy funkcji.
    • Zmienna $# służy do przechowywania liczby argumentów/parametrów pozycyjnych podanych funkcji.
    • Zmienne $* i $@ służą do przechowywania wszystkich argumentów/parametrów podanych funkcji.
      • Kiedy $* jest użyte z podwójnymi cudzysłowami (tj. '$*' ), rozwija się do pojedynczego ciągu znaków oddzielonego spacją. Na przykład „$1 $2 $n itd”.
      • Kiedy $@ jest użyte z podwójnymi cudzysłowami (tj. '$@' ), rozwija się do osobnego ciągu. Na przykład „$1” „$2” „$n” itd.
      • Jeśli $* i $# nie są używane z podwójnymi cudzysłowami, oba są takie same.

    Poniżej znajduje się kod ilustrujący procedurę przekazywania argumentów do funkcji i uzyskiwania dostępu do argumentów wewnątrz funkcji.

    Skrypt Basha

     #!/bin/bash #Script to pass and access arguments function_arguments() { echo $1 echo $2 echo $3 echo $4 echo $5 } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.' 

    Wyjście

    Funkcje Basha

    W tym skrypcie dodaliśmy wartości „My”, „witamy”, „ty”, „on” i „Javatpoint” po wywołaniu argumentów funkcji. Wartości te są przekazywane do argumenty_funkcji jako parametry i przechowywane w zmiennej lokalnej. Jednak w przeciwieństwie do innych języków, interpreter przechowuje przekazane wartości w predefiniowanych zmiennych, którym następnie nadawane są nazwy zgodnie z kolejnością przekazywania parametrów.

    Na przykład,

    'My' słowo jest zapisywane w zmiennej 1 .
    'Witamy' słowo jest zapisywane w zmiennej 2 .
    'Ty' słowo jest zapisywane w zmiennej 3 .
    'NA' słowo jest zapisywane w zmiennej 4 .
    „punkt Java” słowo jest zapisywane w zmiennej 5 .

    Zmienny zakres

    Zmienne globalne definiuje się jako zmienne, do których można uzyskać dostęp w dowolnym miejscu skryptu, niezależnie od zakresu. Domyślnie wszystkie zmienne są zdefiniowane jako zmienne globalne, nawet jeśli są zadeklarowane wewnątrz funkcji. Możemy również tworzyć zmienne jako zmienną lokalną. Zmienne lokalne można deklarować w treści funkcji za pomocą ?local? słowo kluczowe, gdy są przypisane po raz pierwszy. Są one dostępne tylko wewnątrz tej funkcji. Możemy tworzyć zmienne lokalne o tej samej nazwie w różnych funkcjach. Aby dodać zmienną lokalną, możemy zastosować następującą składnię:

     local var_name= 

    Aby lepiej zrozumieć, jak działa zakres zmiennych w skryptach Bash, sprawdź następujący przykład:

    Skrypt Basha

     #!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' 

    Wyjście

    Funkcje Basha

    Zgodnie z wynikami, jeśli w treści funkcji ustawimy zmienną lokalną o tej samej nazwie, co istniejąca zmienna globalna, wówczas będzie ona miała pierwszeństwo przed zmienną globalną. Zmienne globalne można modyfikować w ramach funkcji.

    Zwracane wartości

    Większość języków programowania ma koncepcję zwracania wartości funkcji. Oznacza to, że funkcja musi wysłać dane z powrotem do pierwotnej lokalizacji wywołującej. W przeciwieństwie do funkcji w „prawdziwych” językach programowania, funkcja Bash nie zapewnia obsługi zwracania wartości po jej wywołaniu. Pozwalają nam jednak ustawić status powrotu podobny do sposobu, w jaki program lub polecenie kończy się ze statusem wyjścia. Po zakończeniu funkcji bash zwracaną przez nią wartością jest status ostatniej wykonanej instrukcji w funkcji. Zwraca 0 dla statusu powodzenia i niezerową liczbę dziesiętną z zakresu 1-255 dla niepowodzenia.

    Status zwrotu można wskazać za pomocą słowa kluczowego 'return' i jest on przypisany do zmiennej $?. Instrukcja return kończy funkcję i działa jako status wyjścia funkcji.

    Na przykład, rozważ następujący kod:

    Skrypt Basha

     #!/bin/bash #Setting up a return status for a function print_it () { echo Hello $1 return 5 } print_it User print_it Reader echo The previous function returned a value of $? 

    Wyjście

    Funkcje Basha

    Inną lepszą opcją zwrócenia wartości z funkcji jest wysłanie wartości do standardowe wyjście za pomocą Echo Lub drukuj polecenia, jak pokazano poniżej:

    Skrypt Basha

     #!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet 

    Wyjście

     Welcome to Javatpoint. 

    Nadpisywanie poleceń

    Mamy możliwość zastąpienia poleceń bash, tworząc funkcję o tej samej nazwie, co polecenie, które zamierzamy zastąpić. Na przykład, jeśli chcemy zastąpić polecenie „echo”, musimy utworzyć funkcję o nazwie „echo”.

    Ta koncepcja zastępowania poleceń bash może być pomocna w niektórych scenariuszach, na przykład gdy chcemy użyć polecenia z określonymi opcjami. Również wtedy, gdy nie chcemy kilkukrotnie w skrypcie udostępniać całemu poleceniu opcji. W takich przypadkach możemy zastąpić wbudowane polecenie bash poleceniem opcjami. Teraz zrozumiemy koncepcję zastępowania poleceń w skryptach powłoki Bash za pomocą kilku przykładów:

    Przykład

    W tym przykładzie zastąpiliśmy polecenie „echo” i dodaliśmy znacznik czasu w formie argumentu do polecenia „echo”.

    Skrypt Basha

     #!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo $1 } echo 'Welcome to Javatpoint.' 

    Wyjście

    Funkcje Basha

    Wniosek

    W tym temacie zademonstrowaliśmy funkcję Bash. Funkcja Bash jest uważana za blok kodu wielokrotnego użytku opracowany w celu wykonania określonej operacji. Po zdefiniowaniu można go wywołać kilka razy w skrypcie.


    jest zarezerwowana dla nazwy funkcji.
  • Zmienna $# służy do przechowywania liczby argumentów/parametrów pozycyjnych podanych funkcji.
  • Zmienne $* i $@ służą do przechowywania wszystkich argumentów/parametrów podanych funkcji.
    • Kiedy $* jest użyte z podwójnymi cudzysłowami (tj. '$*' ), rozwija się do pojedynczego ciągu znaków oddzielonego spacją. Na przykład „ $n itd”.
    • Kiedy $@ jest użyte z podwójnymi cudzysłowami (tj. '$@' ), rozwija się do osobnego ciągu. Na przykład „” „” „$n” itd.
    • Jeśli $* i $# nie są używane z podwójnymi cudzysłowami, oba są takie same.

Poniżej znajduje się kod ilustrujący procedurę przekazywania argumentów do funkcji i uzyskiwania dostępu do argumentów wewnątrz funkcji.

Skrypt Basha

wywołaj funkcję JavaScript z HTML
 #!/bin/bash #Script to pass and access arguments function_arguments() { echo  echo  echo  echo  echo  } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.' 

Wyjście

Funkcje Basha

W tym skrypcie dodaliśmy wartości „My”, „witamy”, „ty”, „on” i „Javatpoint” po wywołaniu argumentów funkcji. Wartości te są przekazywane do argumenty_funkcji jako parametry i przechowywane w zmiennej lokalnej. Jednak w przeciwieństwie do innych języków, interpreter przechowuje przekazane wartości w predefiniowanych zmiennych, którym następnie nadawane są nazwy zgodnie z kolejnością przekazywania parametrów.

Na przykład,

'My' słowo jest zapisywane w zmiennej 1 .
'Witamy' słowo jest zapisywane w zmiennej 2 .
'Ty' słowo jest zapisywane w zmiennej 3 .
'NA' słowo jest zapisywane w zmiennej 4 .
„punkt Java” słowo jest zapisywane w zmiennej 5 .

Zmienny zakres

Zmienne globalne definiuje się jako zmienne, do których można uzyskać dostęp w dowolnym miejscu skryptu, niezależnie od zakresu. Domyślnie wszystkie zmienne są zdefiniowane jako zmienne globalne, nawet jeśli są zadeklarowane wewnątrz funkcji. Możemy również tworzyć zmienne jako zmienną lokalną. Zmienne lokalne można deklarować w treści funkcji za pomocą ?local? słowo kluczowe, gdy są przypisane po raz pierwszy. Są one dostępne tylko wewnątrz tej funkcji. Możemy tworzyć zmienne lokalne o tej samej nazwie w różnych funkcjach. Aby dodać zmienną lokalną, możemy zastosować następującą składnię:

 local var_name= 

Aby lepiej zrozumieć, jak działa zakres zmiennych w skryptach Bash, sprawdź następujący przykład:

ciąg tablicy w c

Skrypt Basha

 #!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' 

Wyjście

Funkcje Basha

Zgodnie z wynikami, jeśli w treści funkcji ustawimy zmienną lokalną o tej samej nazwie, co istniejąca zmienna globalna, wówczas będzie ona miała pierwszeństwo przed zmienną globalną. Zmienne globalne można modyfikować w ramach funkcji.

Zwracane wartości

Większość języków programowania ma koncepcję zwracania wartości funkcji. Oznacza to, że funkcja musi wysłać dane z powrotem do pierwotnej lokalizacji wywołującej. W przeciwieństwie do funkcji w „prawdziwych” językach programowania, funkcja Bash nie zapewnia obsługi zwracania wartości po jej wywołaniu. Pozwalają nam jednak ustawić status powrotu podobny do sposobu, w jaki program lub polecenie kończy się ze statusem wyjścia. Po zakończeniu funkcji bash zwracaną przez nią wartością jest status ostatniej wykonanej instrukcji w funkcji. Zwraca 0 dla statusu powodzenia i niezerową liczbę dziesiętną z zakresu 1-255 dla niepowodzenia.

Status zwrotu można wskazać za pomocą słowa kluczowego 'return' i jest on przypisany do zmiennej $?. Instrukcja return kończy funkcję i działa jako status wyjścia funkcji.

Na przykład, rozważ następujący kod:

Skrypt Basha

 #!/bin/bash #Setting up a return status for a function print_it () { echo Hello  return 5 } print_it User print_it Reader echo The previous function returned a value of $? 

Wyjście

Funkcje Basha

Inną lepszą opcją zwrócenia wartości z funkcji jest wysłanie wartości do standardowe wyjście za pomocą Echo Lub drukuj polecenia, jak pokazano poniżej:

łączenie w przód

Skrypt Basha

 #!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet 

Wyjście

 Welcome to Javatpoint. 

Nadpisywanie poleceń

Mamy możliwość zastąpienia poleceń bash, tworząc funkcję o tej samej nazwie, co polecenie, które zamierzamy zastąpić. Na przykład, jeśli chcemy zastąpić polecenie „echo”, musimy utworzyć funkcję o nazwie „echo”.

Ta koncepcja zastępowania poleceń bash może być pomocna w niektórych scenariuszach, na przykład gdy chcemy użyć polecenia z określonymi opcjami. Również wtedy, gdy nie chcemy kilkukrotnie w skrypcie udostępniać całemu poleceniu opcji. W takich przypadkach możemy zastąpić wbudowane polecenie bash poleceniem opcjami. Teraz zrozumiemy koncepcję zastępowania poleceń w skryptach powłoki Bash za pomocą kilku przykładów:

Przykład

W tym przykładzie zastąpiliśmy polecenie „echo” i dodaliśmy znacznik czasu w formie argumentu do polecenia „echo”.

Skrypt Basha

 #!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo  } echo 'Welcome to Javatpoint.' 

Wyjście

Funkcje Basha

Wniosek

W tym temacie zademonstrowaliśmy funkcję Bash. Funkcja Bash jest uważana za blok kodu wielokrotnego użytku opracowany w celu wykonania określonej operacji. Po zdefiniowaniu można go wywołać kilka razy w skrypcie.