50% zniżki wszystkie plany, ograniczony czas. Rozpoczęcie o godz $2.48/mo
Pozostało 11 minut
Serwery i system operacyjny

Wyjaśnienie funkcji Bash: składnia, przykłady i przypadki użycia

Kelly’ego Watsona By Kelly’ego Watsona 11 minut czytania Zaktualizowano 14 grudnia 2025 r
Abstrakcyjna ilustracja 3D świecących niebieskich bloków kodu składanych w strukturę modułową, reprezentujących funkcje Bash

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?

Ilustracja 3D przedstawiająca cyfrowy zwój ze świecącym zapisywanym kodem Bash, przedstawiająca automatyzację skryptów 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?

Futurystyczna ilustracja cyfrowa przedstawiająca niechlujne dane wiersza poleceń uporządkowane przez świecącą bramkę przetwarzającą, symbolizującą działanie funkcji Bash, z pustą przestrzenią po lewej stronie.

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?

Świecąca niebieska przekładnia z symbolami optymalizacji sterująca maszyną kodującą, reprezentująca wydajność i szybkość uzyskaną dzięki korzystaniu z 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?

Diagram blokowy 3D przedstawiający wykonywanie skryptu rozgałęziającego się na blok funkcyjny i powracający, wizualizujący sposób wykorzystania funkcji Bash w przepływie logicznym.

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.

Często zadawane pytania

Czy funkcje Bash mogą mieć zmienne lokalne?

Tak. Funkcje Bash mogą mieć zmienne lokalne za pomocą słowa kluczowego local. Ogranicza to zakres zmiennej do funkcji, uniemożliwiając jej wpływ na zmienne o tej samej nazwie poza funkcją.

Czy funkcje Bash mogą być rekurencyjne?

Tak, funkcje Bash mogą być rekurencyjne. Bash ma stosunkowo mały domyślny rozmiar stosu wywołań, więc w zależności od funkcji rekurencyjnych, które masz na myśli, może zajść potrzeba jego zwiększenia za pomocą polecenia ulimit -s przed wykonaniem.

Czy mogę używać funkcji Bash w innych skryptach?

Tak, możesz udostępniać funkcje Bash pomiędzy skryptami za pomocą polecenia source (lub jego skrótu.). Pobierając plik zawierający definicje funkcji, udostępniasz te funkcje w skrypcie wywołującym. W przypadku procesów potomnych użyj polecenia eksport -f nazwa_funkcji, aby udostępnić funkcję.

Czy mogę używać funkcji Bash w potokach?

Tak, ale wymaga to określonych kroków dla poleceń zewnętrznych. Wewnątrz skryptu możesz przesyłać dane bezpośrednio do funkcji (np. plik cat | moja_funkcja). Jednak polecenia takie jak xargs lub find -exec działają w nowym środowisku. Aby użyć tam funkcji, musisz ją wyeksportować (export -f my_func), a następnie jawnie wywołać Bash (np. xargs bash -c „my_func „$@”‘).

Co to jest funkcja skryptu powłoki?

Funkcja skryptu powłoki to zdefiniowany blok kodu w skrypcie powłoki, który służy określonemu celowi i może być wywoływany z różnych części skryptu. Funkcje oferują dużą wartość pod względem modułowości kodu, lepszej możliwości ponownego użycia i łatwiejszej konserwacji. W kontekście skryptów Bash funkcje są hermetyzowane w całym skrypcie.

Udział

Więcej z bloga

Czytaj dalej.

Najlepsze aplikacje hostowane samodzielnie, które można uruchomić w chmurze Cosmos. Obraz okładki z panelami aplikacji wokół pulpitu nawigacyjnego Cosmos.
Serwery i system operacyjny

Najlepsze aplikacje hostowane samodzielnie, które można uruchomić w chmurze Cosmos: pliki, multimedia, hasła, automatyzacja i wiele więcej!

Być może skonfigurowałeś Cosmos Cloud i teraz chcesz zobaczyć, jakie aplikacje dobrze z nią pasują, a może nawet jeszcze nie zdecydowałeś się na Cosmos i po prostu chcesz zobaczyć, jak dobrze pasuje do Twojej pracy.

Nicka SilveraNicka Silvera 16 minut czytania
Portainer vs Cosmos Cloud do zarządzania aplikacjami Docker z hybrydowym diagramem konfiguracji i neonowymi operacjami a blokami dostępu.
Serwery i system operacyjny

Portainer vs Cosmos Cloud: najlepsze dopasowanie do zarządzania aplikacjami Docker

Jeśli znasz już Dockera i chcesz po prostu czystszego sposobu uruchamiania rosnącego stosu aplikacji, oto krótka odpowiedź na pytanie Portainer vs Cosmos Cloud. Portainer to mocniejszy wybór w przypadku reżyserii

Nicka SilveraNicka Silvera 14 minut czytania
Grafika przedstawiająca trzy hostowane ścieżki w jednym abstrakcyjnym świecie sieci w chmurze.
Serwery i system operacyjny

Cosmos Cloud vs CasaOS vs Umbrel: która platforma samoobsługowa pasuje do Twojej konfiguracji?

Krótka odpowiedź jest taka, że ​​CasaOS jest nadal najłatwiejszym miejscem na rozpoczęcie, Umbrel ma najczystszy, starannie wyselekcjonowany styl, a Cosmos Cloud ma więcej sensu, gdy chcesz mieć ściślejszą kontrolę nad domeną

Nicka SilveraNicka Silvera 11 minut czytania

Gotowy do wdrożenia? Od 2,48 USD/mies.

Niezależna chmura, od 2008. AMD EPYC, NVMe, 40 Gbps. 14-dniowy zwrot pieniędzy.