Bash - Lekcja 4. Własne zewnętrzne funkcje
Spisu treści:
- Deklaracja funkcji Bash
- Zakres zmiennych
- Zwracane wartości
- Przekazywanie argumentów do funkcji Bash
- Wniosek
Funkcja Bash jest zasadniczo zestawem poleceń, które można wywoływać wiele razy. Celem tej funkcji jest pomoc w zwiększeniu czytelności skryptów bash i uniknięcie ciągłego pisania tego samego kodu.
W porównaniu z większością języków programowania funkcje Bash są nieco ograniczone. W tym samouczku omówimy podstawy funkcji Bash i pokażemy, jak ich używać w skryptach powłoki.
Deklaracja funkcji Bash
Składnia do deklarowania funkcji bash jest bardzo prosta. Mogą być zadeklarowane w dwóch różnych formatach:
-
Pierwszy format zaczyna się od nazwy funkcji, po której następują nawiasy. Jest to preferowany i częściej używany format.
function_name () { commands }Wersja jednoliniowa:
function_name () { commands; }Drugi format zaczyna się od słowa zarezerwowanego dla
functionpo którym następuje nazwa funkcji.function function_name { commands }Wersja jednoliniowa:
function function_name { commands; }
Kilka punktów do odnotowania:
- Lista poleceń między nawiasami klamrowymi
{}jest ciałem funkcji. Nawiasy klamrowe otaczające ciało funkcji muszą być oddzielone od ciała spacjami lub znakami nowej linii. Zdefiniowanie funkcji nie powoduje jej wykonania. Aby wywołać funkcję bash, wystarczy użyć nazwy funkcji. Polecenia między nawiasami klamrowymi są wykonywane za każdym razem, gdy funkcja jest wywoływana w skrypcie powłoki. Definicja funkcji musi być umieszczona przed wywołaniem funkcji. Podczas korzystania z funkcji „kompaktowania” w jednym wierszu średnik;należy wykonać ostatnie polecenie w funkcji. Zawsze należy starać się, aby nazwy funkcji były opisowe.
Aby to lepiej zrozumieć, spójrz na następujący przykład:
~ / hello_world.sh
#!/bin/bash hello_world () { echo 'hello, world' } hello_world
Przeanalizujmy kod linia po linii:
- W linii
3definiujemy funkcję, nadając jej nazwę i otwierając nawias klamrowy{który oznacza początek ciała funkcji. Linia4to ciało funkcji. Treść funkcji może zawierać wiele poleceń i deklaracji zmiennych. Linia5, zamykający nawias klamrowy}określa koniec funkcjihello_worldlinii7wykonujemy funkcję. Możesz wykonać tę funkcję tyle razy, ile potrzebujesz.
Jeśli uruchomisz skrypt, wydrukuje
hello, world
.
Zakres zmiennych
Zmienne globalne to zmienne, do których można uzyskać dostęp z dowolnego miejsca w skrypcie, niezależnie od zakresu. W Bash wszystkie zmienne są domyślnie zdefiniowane jako globalne, nawet jeśli są zadeklarowane w funkcji.
Zmienne lokalne mogą być deklarowane w treści funkcji słowem kluczowym
local
i mogą być używane tylko wewnątrz tej funkcji. W różnych funkcjach możesz mieć lokalne zmienne o tej samej nazwie.
Aby lepiej zilustrować działanie zakresu zmiennych w Bash, rozważmy przykład:
~ / variable_scope.sh
#!/bin/bash var1='A' var2='B' my_function () { local var1='C' var2='D' echo "Inside function: var1: $var1, var2: $var2" } echo "Before executing function: var1: $var1, var2: $var2" my_function echo "After executing function: var1: $var1, var2: $var2"
Skrypt rozpoczyna się od zdefiniowania dwóch zmiennych globalnych
var1
i
var2
. Następnie funkcja, która ustawia zmienną lokalną
var1
i modyfikuje zmienną globalną
var2
.
Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D
Z powyższego wyniku możemy wywnioskować, że:
- Jeśli ustawisz zmienną lokalną w treści funkcji o takiej samej nazwie jak istniejąca zmienna globalna, będzie ona miała pierwszeństwo przed zmienną globalną. Zmienne globalne można zmienić w obrębie funkcji.
Zwracane wartości
W przeciwieństwie do funkcji w „prawdziwych” językach programowania, funkcje Bash nie pozwalają na zwrócenie wartości po wywołaniu. Po zakończeniu funkcji bash jej wartością zwracaną jest stan ostatniej instrukcji wykonanej w funkcji,
0
dla powodzenia i niezerowa liczba dziesiętna w zakresie 1 - 255 dla niepowodzenia.
Status zwrotu można określić za pomocą słowa kluczowego
return
i jest on przypisany do zmiennej
$?
. Instrukcja
return
kończy działanie funkcji. Możesz myśleć o tym jako o statusie wyjścia funkcji.
#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?
some result 55
Aby faktycznie zwrócić dowolną wartość z funkcji, musimy użyć innych metod. Najprostszą opcją jest przypisanie wyniku funkcji do zmiennej globalnej:
~ / return_values.sh
#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result
some result
Inną lepszą opcją zwrócenia wartości z funkcji jest wysłanie wartości do standardowego
stdout
za pomocą echa lub
printf
jak pokazano poniżej:
#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result
some result
Zamiast po prostu wykonać funkcję, która wypisze komunikat na standardowe wyjście, przypisujemy wyjście funkcji do zmiennej
func_result
za pomocą podstawienia polecenia
$()
. Zmiennej można później użyć w razie potrzeby.
Przekazywanie argumentów do funkcji Bash
Aby przekazać dowolną liczbę argumentów do funkcji bash, po prostu umieść je tuż po nazwie funkcji, oddzielając je spacją. Dobrą praktyką jest podwójne cytowanie argumentów, aby uniknąć błędnej analizy argumentu ze spacjami.
- Przekazane parametry to
$1$2$3…$n, odpowiadające pozycji parametru po nazwie funkcji. Zmienna$0jest zarezerwowana dla nazwy funkcji. Zmienna$#przechowuje liczbę parametrów pozycyjnych / argumentów przekazanych do funkcja. Zmienne$*i$@przechowują wszystkie parametry pozycyjne / argumenty przekazane do funkcji.- W przypadku podwójnego cudzysłowu
"$*"rozwija się do pojedynczego łańcucha oddzielonego spacją (pierwszy znak IFS) -"$1 $2 $n". Po podwójnym cudzysłowie"$@"rozwija się do oddzielnych ciągów -"$1" "$2" "$n"Gdy nie podano podwójnego cudzysłowu,$*i$@są takie same.
- W przypadku podwójnego cudzysłowu
Oto przykład:
~ / passing_arguments.sh
#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"
Wniosek
Funkcja Bash to blok kodu wielokrotnego użytku przeznaczony do wykonywania określonej operacji. Raz zdefiniowana funkcja może być wywoływana wiele razy w skrypcie.
Możesz także przeczytać o tym, jak używać funkcji Bash, aby utworzyć niezapomniane polecenie skrótu dla dłuższego polecenia.
terminal bashWłącz funkcje multimedialne i funkcje w systemie Windows 7 N i Windows 7 Kn
Pakiet funkcji multimedialnych dla systemu Windows 7 N i Windows 7 KN zainstaluje Media Player i powiązane technologie na komputerze z systemem Windows 7 N lub Windows 7 KN edition
Funkcje i funkcje usług Microsoft Office 365
Firma Microsoft wydała dzisiaj zestaw dokumentów, zawierający szczegółowy opis funkcji i funkcjonalności usług Office 365 .
Nokia Lumia 510 ogłosiła: Funkcje, funkcje, specyfikacje
Nokia ogłosiła telefon komórkowy Lumia 510, ukierunkowany na poziom podstawowy, styl - szukających użytkowników smartfonów. Telefon będzie najbardziej przystępnym cenowo telefonem z systemem Windows Phone.







