0Pricing
Linux Command Line & Bash Scripting Mastery · Lekcja

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 Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Linux Command Line & Bash Scripting Mastery 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."
fi

Przechwytywanie 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_input lub create_backup.
  • Używaj local: Zawsze używaj local dla 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 local do określania zakresu zmiennych.
  • Przekazywanie argumentów za pomocą $1, $#, $@.
  • Ustawianie statusu wyjścia za pomocą return.
  • Przechwytywanie wyniku za pomocą echo i 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 Linux Command Line & Bash Scripting Mastery, przejdź na CoddyKit PRO. Kurs Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery 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ąć Linux Command Line & Bash Scripting Mastery?

Nie wymagamy żadnego doświadczenia. Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery?

Tak. Każda lekcja Linux Command Line & Bash Scripting Mastery 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

  1. Konstrukcje pętli (for, while)
  2. Funkcje w skryptach Bash
  3. Argumenty i opcje skryptów ($@, $#, getopts)
  4. Instrukcja case i dopasowywanie wzorców
← Powrót do Linux Command Line & Bash Scripting Mastery