Funkcje Bash grupują powiązane polecenia pod jedną nazwą. Kiedy wywołasz tę nazwę, zostanie wykonany cały blok. Możesz przekazywać argumenty, aby dostosować zachowanie i zwracać wartości w celu przekazania wyników. Dzięki temu Twój kod będzie czysty i łatwy w utrzymaniu.
Linux dominuje w środowiskach serwerowych na całym świecie, więc opanowanie funkcji Bash ma teraz większe znaczenie niż kiedykolwiek. Funkcje zamieniają niechlujne skrypty w czystą automatyzację wielokrotnego użytku.
Ten przewodnik przeprowadzi Cię przez podstawową składnię do zaawansowanych przypadków użycia. Dowiesz się, jak deklarować funkcje, przekazywać parametry, obsługiwać zwracane wartości i poznasz dziesięć praktycznych przykładów, które możesz wykorzystać we własnych skryptach.
TL;DR
- Funkcje Bash to tak zwane bloki kodu, których możesz używać ponownie w swoich skryptach
- Zdefiniuj funkcje za pomocą nazwa_funkcji() { polecenia; } składnia
- Przekaż argumenty za pomocą $1, $2, $3 parametry pozycyjne
- Funkcje poprawiają czytelność kodu, modułowość i konserwację
- Używać powrót aby wyjść z funkcji i przekazać kody stanu (0 = sukces, niezerowe = niepowodzenie)
- Funkcje mogą być współużytkowane pomiędzy skryptami za pomocą źródło or eksport -f
- Praktyczne przykłady obejmują tworzenie kopii zapasowych plików, monitorowanie dysku, sprawdzanie poprawności danych wejściowych i sprawdzanie usług
Co to jest skrypt Bash?

Skrypty Bash to metoda automatyzacji zadań przy użyciu powłoki Bash. Służy jako domyślny interfejs wiersza poleceń dla systemu Linux i pozostaje standardowym narzędziem w systemie macOS. Skrypt Bash to program napisany w języku skryptowym Bash, który można uruchomić w terminalu lub jako samodzielny plik skryptu.
Z Wykorzystanie komputerów stacjonarnych z systemem Linux stale rośnie i systemu operacyjnego dominującego w środowiskach serwerowych na całym świecie, umiejętności pisania skryptów Bash stały się cenne dla specjalistów IT. Język dobrze integruje się z narzędziami DevOps, takimi jak Docker, Kubernetes i potoki CI/CD.
Skrypty Bash umożliwiają realizację zadań od prostych poleceń po złożoną automatyzację i administrację systemem. Możesz automatyzować powtarzalne zadania, opracowywać skrypty konserwacji, konstruować potoki wdrażania, zarządzać systemami oprogramowania i manipulować danymi.
Co to jest funkcja Bash?

Funkcję Bash można zdefiniować jako zestaw poleceń zdefiniowanych w skrypcie Bash lub ustawionych interaktywnie w wierszu poleceń, w zależności od przypadku użycia. Raz zdefiniowaną funkcję Bash można wywoływać wielokrotnie w skrypcie lub w innych skryptach, podobnie jak zwykłe polecenie powłoki.
Funkcje Bash umożliwiają tworzenie bloków kodu wielokrotnego użytku, które umożliwiają wykonywanie złożonych operacji, organizowanie kodu i upraszczanie skryptów. Możesz przekazywać argumenty do funkcji Bash, a następnie używać ich w funkcji do wykonywania operacji. Funkcje Bash zwracają wartości, których możesz użyć w innym miejscu skryptu.
e obejmie kilka konkretnych stylów wdrażania, w tym prosta_funkcja dla podstawowej logiki, proste_wejścia do obsługi argumentów i zaawansowanych struktur, takich jak fibonnaci_recursion.
Podstawy funkcji Bash ma znaczenie dla każdego administratora systemu lub inżyniera DevOps pracującego z automatyzacją. W poniższych sekcjach szczegółowo opisano każdy z tych typów.
Dlaczego warto używać funkcji Bash?

Teraz, gdy omówiliśmy już definicję funkcji Basha, przyjrzyjmy się ich głównym zaletom. Ta sekcja pomoże Ci zrozumieć, gdzie funkcje są najbardziej przydatne.
Możliwość ponownego użycia
Tworzysz funkcję Bash i masz potężne narzędzie. Możesz napisać blok kodu raz i używać go wielokrotnie w swoim skrypcie lub nawet w innych skryptach.
Dzięki temu Twój kod jest bardziej wydajny i oszczędza czas, eliminując powielanie. Utrzymanie kodu staje się prostsze, ponieważ wystarczy zmienić funkcję w jednym miejscu.
Czytelność
Skomplikowane pisma mogą być trudne do rozszyfrowania. Funkcje Bash rozwiązują ten problem, dzieląc skrypt na mniejsze, łatwiejsze w zarządzaniu części.
Każda funkcja służy określonemu celowi i ma opisową nazwę wyjaśniającą jej rolę. Pomaga to Tobie i innym łatwiej zrozumieć i zarządzać kodem.
Modułowość
Funkcje organizują Twój kod. Możesz podzielić logikę na mniejsze moduły, dzięki czemu struktura skryptu będzie przejrzysta i łatwa w zarządzaniu.
A jeśli chcesz dodać nową funkcję, możesz to zrobić bez konieczności ingerencji w inne części skryptu. Kiedy nadejdzie czas usunięcia lub modyfikacji funkcjonalności, reszta skryptu pozostanie nienaruszona.
Parametry funkcji Basha
Do funkcji możesz przekazywać argumenty lub parametry. Argumenty te umożliwiają funkcjom dostosowywanie się i wykonywanie różnych działań w oparciu o otrzymywane dane wejściowe.
Otwiera to wiele możliwości, jednocześnie czyniąc Twoje funkcje bardziej wszechstronnymi i elastycznymi. Zamiast wielokrotnie pisać podobny kod, napisz jedną funkcję, która obsługuje różne dane wejściowe.
Jak i gdzie używać funkcji Bash?

Przejdźmy teraz do szczegółów technicznych z naszą definicją i zacznijmy od krótkiego przykładu tworzenia funkcji Bash. W środowiskach opartych na systemie Unix można zastosować następującą składnię. Jeśli pracujesz w systemie Windows, możesz zainstaluj Linux Bash na Windows 10 podążać za tymi przykładami.
Tworzenie funkcji Basha
Zacznij od użycia następującej struktury poleceń:
nazwa_funkcji () {
# polecenia trafiają tutaj
}
Po utworzeniu funkcji możesz w dowolnym momencie użyć jej w swoim kodzie. Oto działający przykład:
pozdrawiam () {
echo „Witam, 1 $!”
}
Wywołaj tę funkcję za pomocą witaj Świecie aby wyświetlić „Hello, World!” The $1 reprezentuje pierwszy argument przekazany do funkcji.
Oto kilka bardziej praktycznych przykładów, które możesz wykorzystać we własnych skryptach:
# Utwórz kopię zapasową dowolnego pliku
plik_kopii zapasowej () {
cp „$1” „$1.bak”
echo „Utworzono kopię zapasową: $1.bak”
}
# Sprawdź, czy katalog istnieje, utwórz, jeśli nie
katalog_gwarancyjny () {
Jeśli [ ! -d „1$”]; Następnie
mkdir -p „$1”
echo „Utworzony katalog: $1”
fi
}
# Rejestruj wiadomości ze znacznikami czasu
komunikat_logowania () {
echo „[$(data ‘+%Y-%m-%d %H:%M:%S’)] $1”
}
Definiujesz te niestandardowe funkcje Bash raz i wywołujesz je, gdy zajdzie taka potrzeba, w całym skrypcie.
Podstawy składni funkcji
Funkcje zachowują się jak miniskrypty w skrypcie głównym, ale współdzielą pamięć powłoki. Pisząc je, pamiętaj o tych trzech konkretnych zachowaniach.
Zmienny zakres (lokalny vs. globalny)
Zmienne wewnątrz funkcji są domyślnie globalne. Jeśli zdefiniujesz my_var=”test” wewnątrz funkcji zastępuje wszelkie istniejące moja_zmienna w swoim skrypcie. Zawsze używaj lokalny ograniczenie zmiennych do funkcji zapobiega skutkom ubocznym:
lokalny my_var=”wartość”
Parametry pozycyjne
Funkcje odczytują argumenty za pomocą tego samego $1, $2, I $@ zmienne jako skrypty. Są one lokalne dla funkcji i resetowane po zakończeniu funkcji. Oryginalne argumenty skryptu nie są dostępne wewnątrz funkcji, chyba że przekażesz je jawnie.
Zwracane wartości
Funkcje Bash nie zwracają danych, tak jak funkcje Pythona lub JavaScript. The powrót polecenie ustawia jedynie status wyjścia (0-255), aby wskazać sukces lub niepowodzenie. Aby zwrócić rzeczywiste dane (takie jak ciąg znaków lub obliczenie), echo wynik i przechwyć go podczas wywoływania funkcji:
wynik=$(moja_funkcja)
10 najlepszych przydatnych przykładów funkcji Bash
Teraz, gdy już rozumiesz funkcje Bash i sposób ich tworzenia, oto dziesięć praktycznych przykładów, które możesz dodać do swoich skryptów. Każda funkcja rozwiązuje typowy problem i demonstruje odpowiednią strukturę, argumenty i zwracane wartości.
1. Funkcja tworzenia kopii zapasowych plików
Tworzy kopię zapasową dowolnego pliku ze znacznikiem czasu:
plik_kopii zapasowej () {
plik lokalny=”$1″
lokalna kopia zapasowa=”${plik}.$(data +%Y%m%d_%H%M%S).bak”
if [ -f „$plik” ]; Następnie
cp „$plik” „$kopia zapasowa”
echo „Utworzono kopię zapasową: $backup”
zwróć 0
w przeciwnym razie
echo „Błąd: Nie znaleziono pliku”
powrót 1
fi
}
Stosowanie: plik_kopii zapasowej /etc/nginx/nginx.conf
2. Kontroler katalogów
Sprawdza, czy katalog istnieje i w razie potrzeby tworzy go:
katalog_gwarancyjny () {
katalog lokalny=”$1″
Jeśli [ ! -d „$katalog”]; Następnie
mkdir -p „$katalog”
echo „Utworzono: $dir”
fi
}
Stosowanie: katalog_gwarancyjny /var/log/myapp
3. Rejestrator ze znacznikiem czasu
Dodaje znaczniki czasu do komunikatów dziennika na potrzeby debugowania:
komunikat_logowania () {
poziom lokalny=”$1″
wiadomość lokalna=”$2″
echo „[$(data ‘+%Y-%m-%d %H:%M:%S’)] [$poziom] $wiadomość”
}
Stosowanie: log_message „INFO” „Skrypt został uruchomiony”
4. Monitor miejsca na dysku
Sprawdza wykorzystanie dysku i ostrzega, jeśli przekroczy próg:
check_disk_space () {
próg lokalny=”${1:-80}”
użycie lokalne=$(df / | tail -1 | awk „{print $5}” | tr -d „%”)
if [„$użycie” -gt „$próg” ]; Następnie
echo „Ostrzeżenie: użycie dysku na poziomie ${usage}%”
powrót 1
fi
zwróć 0
}
Stosowanie: check_disk_space 90
5. Walidator wprowadzania
Sprawdza, czy dane wprowadzone przez użytkownika nie są puste:
valid_input () {
wejście lokalne=”$1″
nazwa lokalna=”$2″
if [ -z „$wejście” ]; Następnie
echo „Błąd: $nazwa nie może być pusta”
powrót 1
fi
zwróć 0
}
Stosowanie: valid_input „$nazwa użytkownika” „Nazwa użytkownika”
6. Sprawdzanie stanu usługi
Sprawdza, czy usługa jest uruchomiona i raportuje jej stan:
sprawdź_usługę () {
usługa lokalna=”1$″
jeśli systemctl jest aktywny – cicha „$usługa”; Następnie
echo „$usługa działa”
zwróć 0
w przeciwnym razie
echo „$usługa nie działa”
powrót 1
fi
}
Stosowanie: sprawdź_usługę nginx
7. Ekstraktor rozszerzeń plików
Wyodrębnia rozszerzenie z nazwy pliku:
get_extension () {
lokalna nazwa pliku=”$1″
echo „${nazwa pliku##*.}”
}
Stosowanie: ext=$(get_extension „dokument.pdf”)
8. Podkaszarka żyłkowa
Usuwa początkowe i końcowe białe znaki z ciągów:
trim_string () {
lokalny str=”$1″
str=”${str#”${str%%[![:space:]]*}”}”
str=”${str%”${str##*[![:space:]]}”}”
echo „$str”
}
Stosowanie: clean=$(trim_string „Witaj, świecie”)
9. Bezpieczny archiwizator plików
Przenosi plik do niestandardowego katalogu $HOME/.trash zamiast go trwale usuwać. Dołącza znacznik czasu do nazwy pliku, aby zapobiec nadpisaniu poprzednich kopii zapasowych.
bezpieczne_usuń() {
plik lokalny=”$1″
kosz lokalny=”$HOME/.trash”
# Dołącz znacznik czasu, aby uniknąć nadpisania istniejących plików
lokalna nowa_nazwa="$(nazwa bazowa „$plik”)_$(data +%s)”
mkdir -p „$kosz”
if [ -e „$plik” ]; Następnie
mv „$plik” „$trash/$nowa_nazwa”
echo „Przeniesiono do archiwum: $plik -> $trash/$new_name”
w przeciwnym razie
echo „Błąd: nie znaleziono pliku $”
powrót 1
fi
}
Stosowanie: bezpieczne_usuń stary_skrypt.sh
10. Reporter stanu
Demonstruje mechanizm powrotu funkcji Bash do obsługi błędów. Wartość zwracana przez funkcję Bash wskazuje sukces (0) lub niepowodzenie (różne od zera):
dane_procesu () {
plik lokalny=”$1″
Jeśli [ ! -f „$plik”]; Następnie
powrót 1
fi
# Przetwórz plik
kot „plik $” | wc -l
zwróć 0
}
# Sprawdź wartość zwracaną
dane_procesu „dane.txt”
jeśli [$? -równ. 0]; Następnie
echo „Przetwarzanie zakończone”
w przeciwnym razie
echo „Przetwarzanie nie powiodło się”
fi
The $? zmienna przechwytuje status wyjścia z ostatniego polecenia lub wywołania funkcji.
| Funkcjonować | Zamiar | Kluczowa funkcja |
| plik_kopii zapasowej | Twórz kopie zapasowe plików | Nazewnictwo ze znacznikiem czasu |
| zapewnij_katalog | Zarządzanie katalogami | Tworzy w przypadku braku |
| wiadomość_loga | Wycięcie lasu | Prefiks znacznika czasu |
| check_disk_space | Monitorowanie systemu | Alerty progowe |
| sprawdź_wejście | Walidacja danych wejściowych | Kontrola pustego ciągu |
| sprawdź_usługę | Monitorowanie usług | Integracja systemowa |
| get_extension | Analiza ciągów | Rozszerzanie parametrów |
| trim_string | Oczyszczanie sznurka | Usuwanie białych znaków |
| bezpieczne_usuń | Bezpieczne usuwanie | Katalog śmieci |
| dane_procesu | Obsługa błędów | Zwróć wartości |
Uruchamianie funkcji Bash na VPS
Funkcje Bash stają się potężne, gdy działają w środowisku serwera dedykowanego. Nasz Serwer VPS z Linuksem zapewnia pełny dostęp do konta root w celu dostosowania środowiska powłoki, tworzenia ogólnosystemowych bibliotek funkcji i automatyzacji zadań zarządzania serwerem bez ograniczeń.
Dzięki VPS możesz przechowywać funkcje wielokrotnego użytku /etc/profile.d/ dla wszystkich użytkowników, planuj skrypty oparte na funkcjach za pośrednictwem zadań cron i twórz potoki automatyzacji na potrzeby wdrażania i konserwacji. Oferujemy serwery w 12 lokalizacjach na całym świecie z szybkością sieci do 40 Gb/s i pamięcią DDR5, co oznacza szybsze wykonywanie skryptów i płynniejsze przetwarzanie danych.
Ten poziom kontroli sprawia, że VPS jest idealnym rozwiązaniem dla każdego, kto poważnie podchodzi do skryptów powłoki i automatyzacji systemów.
Wniosek
Funkcje Bash są kluczem do tworzenia skryptów modułowych i wielokrotnego użytku. Umożliwiają grupowanie powiązanych poleceń i hermetyzację złożonej logiki, dzięki czemu kod jest łatwiejszy do odczytania i utrzymania. Jeśli zarządzasz infrastrukturą chmury, automatyzujesz procesy wdrażania lub wykonujesz rutynowe zadania administracyjne systemu, funkcje pomagają w utrzymaniu porządku i wydajności skryptów.
W tym artykule omówiliśmy podstawy funkcji Bash, w tym sposób ich definiowania i wywoływania, dziesięć praktycznych przykładów funkcji i typowe przypadki użycia, które pomogą Ci rozpocząć własne projekty automatyzacji.
W połączeniu ze strukturami kontrolnymi, takimi jak Bash instrukcja if, funkcje dają podstawy do potężnej automatyzacji. Używając funkcji Bash w swoich skryptach, możesz pisać czystszy, bardziej modułowy kod, który jest łatwiejszy do zrozumienia i utrzymania.