Funkcje w skryptach Bash
Uporządkuje Pan/Pani kod za pomocą funkcji, zwiększając możliwość ponownego użycia i tworząc czystsze, łatwiejsze w utrzymaniu skrypty.
Funkcje w skryptach Bash to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Czym są funkcje Bash?
W skryptach Bash funkcja to blok kodu wykonujący określone zadanie. Można ją traktować jak mini-skrypt umieszczony w głównym skrypcie.
Funkcje pomagają:
- Ponownie wykorzystywać kod: Napisać fragment logiki raz i wywoływać go wielokrotnie.
- Organizować skrypty: Dzielić złożone zadania na mniejsze, łatwiejsze do zarządzania jednostki.
- Zwiększać czytelność: Ułatwiać zrozumienie i konserwację skryptu.
Definiowanie prostej funkcji
W Bashu istnieją dwa popularne sposoby definiowania funkcji. Oba dają ten sam rezultat. Najczęściej używa się pierwszej składni.
Uruchom ten przykład. Definiuje on funkcje, ale jeszcze ich nie wywołuje!
#!/bin/bash
# Method 1: The most common way
my_first_func () {
echo "Hello from my_first_func!"
}
# Method 2: Using the 'function' keyword
function my_second_func {
echo "Hello from my_second_func!"
}
echo "Functions defined, but not called."Wywoływanie funkcji
Zdefiniowanie funkcji nie powoduje jej wykonania. Aby uruchomić kod znajdujący się w funkcji, wystarczy wywołać ją po nazwie, tak jak każde inne polecenie.
Zobacz, jak wywołujemy my_function po jej zdefiniowaniu:
#!/bin/bash
my_function () {
echo "This message is from inside the function."
}
echo "Script started."
my_function # Call the function here
echo "Script finished."Zmienne lokalne w funkcjach
Domyślnie zmienne zdefiniowane wewnątrz funkcji Bash są globalne, co oznacza, że można uzyskać do nich dostęp i modyfikować je z dowolnego miejsca w skrypcie.
Aby zapobiec niezamierzonym efektom ubocznym i zachować niezależność funkcji, użyj słowa kluczowego local, aby zadeklarować zmienną jako lokalną. Zmienne lokalne istnieją tylko w obrębie danej funkcji.
#!/bin/bash
global_message="I'm a global message"
my_function () {
local func_message="I'm a local message"
global_message="I've been changed by the function!"
echo "Inside func: $func_message"
echo "Inside func: $global_message"
}
echo "Before func: $global_message"
my_function
echo "After func: $global_message"
echo "After func: $func_message (This will be empty)"Przekazywanie argumentów do funkcji
Informacje można przekazywać do funkcji za pomocą argumentów, podobnie jak w przypadku zwykłych poleceń powłoki. Wewnątrz funkcji dostęp do tych argumentów uzyskuje się za pomocą specjalnych zmiennych:
$1,$2,$3...: Poszczególne argumenty$#: Łączna liczba argumentów$@: Wszystkie argumenty jako oddzielne ciągi znaków
#!/bin/bash
greet_user () {
echo "Hello, $1!"
echo "You are $2 years old."
echo "Total arguments received: $#"
echo "All arguments: $@"
}
echo "Calling greet_user with two arguments:"
greet_user "Alice" 30
echo "\nCalling greet_user with one argument:"
greet_user "Bob"Status wyjścia funkcji (return)
Funkcja, podobnie jak każde polecenie, zwraca status wyjścia. Zgodnie z konwencją wartość 0 oznacza powodzenie, a każda wartość niezerowa wskazuje błąd.
Słowo kluczowe return służy do ustawiania tego statusu wyjścia. Następnie można go sprawdzić za pomocą specjalnej zmiennej $?, bezpośrednio po wywołaniu funkcji.
#!/bin/bash
check_age () {
local age=$1
if [ "$age" -ge 18 ]; then
return 0 # Success: 18 or older
else
return 1 # Failure: under 18
fi
}
check_age 25
echo "Exit status for 25: $?"
check_age 16
echo "Exit status for 16: $?"
if check_age 20; then
echo "User is an adult."
else
echo "User is a minor."
fiPrzechwytywanie wyniku funkcji
Podczas gdy return zwraca status wyjścia, jeśli funkcja ma zwracać „wartość”, którą można zapisać w zmiennej, powinna wypisać tę wartość na standardowe wyjście za pomocą echo.
Następnie przechwytuje się ten wynik za pomocą podstawienia polecenia, umieszczając wywołanie funkcji w $(...).
#!/bin/bash
get_full_name () {
local first_name=$1
local last_name=$2
echo "$first_name $last_name" # Echo the full name
}
name="$(get_full_name "John" "Doe")"
echo "Full name captured: $name"
calculate_area () {
local length=$1
local width=$2
echo $((length * width))
}
area=$(calculate_area 10 5)
echo "Calculated area: $area"Praktyczny przykład: rejestrator
Oto praktyczny przykład funkcji wielokrotnego użytku: prostego rejestratora. Funkcję tę można wywoływać w całym skrypcie, aby wyświetlać komunikaty ze znacznikiem czasu, co ułatwia debugowanie i śledzenie działania programu.
#!/bin/bash
log_message () {
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
local message="$1"
echo "[$timestamp] $message"
}
log_message "Script execution started."
sleep 1 # Simulate some work
log_message "Processing user data..."
sleep 1
log_message "Operation completed successfully."Dobre praktyki dotyczące funkcji
Aby pisać za pomocą funkcji czytelne i łatwe w utrzymaniu skrypty, warto stosować się do poniższych wskazówek:
- Zachowaj prostotę: Każda funkcja powinna dobrze wykonywać jedno zadanie.
- Znaczące nazwy: Używaj opisowych nazw, takich jak
validate_inputlubcreate_backup. - Używaj
local: Zawsze używajlocaldla zmiennych wewnątrz funkcji, aby uniknąć konfliktów. - Dodawaj komentarze: Wyjaśniaj, co robi funkcja, jakie przyjmuje argumenty i co zwraca.
- Sprawdzaj dane wejściowe: Jeśli funkcja oczekuje określonych argumentów, sprawdzaj je.
Sprawdzanie argumentów funkcji
Sprawdź swoją wiedzę na temat przekazywania argumentów do funkcji Bash i uzyskiwania do nich dostępu.
Funkcje: podsumowanie i kolejne kroki
Świetna praca! Opanowałeś funkcje Bash.
Omówiliśmy:
- Definiowanie i wywoływanie funkcji.
- Używanie
localdo określania zakresu zmiennych. - Przekazywanie argumentów za pomocą
$1,$#,$@. - Ustawianie statusu wyjścia za pomocą
return. - Przechwytywanie wyniku za pomocą
echoi podstawienia polecenia.
Funkcje mają kluczowe znaczenie przy pisaniu modułowych, wielokrotnego użytku i łatwych w utrzymaniu skryptów Bash. Ćwicz dalej, aby tworzyć bardziej zaawansowane i uporządkowane skrypty!
Często zadawane pytania
Czy lekcja „Funkcje w skryptach Bash” jest bezpłatna?
Tak — pełny tekst „Funkcje w skryptach Bash” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Funkcje w skryptach Bash”?
Uporządkuje Pan/Pani kod za pomocą funkcji, zwiększając możliwość ponownego użycia i tworząc czystsze, łatwiejsze w utrzymaniu skrypty. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Funkcje w skryptach Bash”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Konstrukcje pętli (for, while)
- Funkcje w skryptach Bash
- Argumenty i opcje skryptów ($@, $#, getopts)
- Instrukcja case i dopasowywanie wzorców