Polecenie trap
w Bashu służy do przechwytywania sygnałów i zdarzeń, co pozwala na wykonanie określonych akcji w odpowiedzi na te sygnały. Jest to przydatne, gdy chcemy zapewnić, że nasz skrypt zachowa się w określony sposób, na przykład przy zakończeniu działania lub przerwaniu przez użytkownika.
Podstawowa składnia polecenia trap
wygląda następująco:
trap [akcja] [sygnał]
Gdzie akcja
to polecenie, które ma być wykonane, a sygnał
to sygnał, który ma być przechwycony.
SIGINT
: Sygnał przerwania (np. Ctrl+C).SIGTERM
: Sygnał zakończenia procesu.EXIT
: Akcja do wykonania przy zakończeniu skryptu.ERR
: Akcja do wykonania w przypadku błędu.trap 'echo "Przerwano działanie skryptu"; exit' SIGINT
while true; do
echo "Działam..."
sleep 1
done
W tym przykładzie, gdy użytkownik naciśnie Ctrl+C, skrypt wypisze komunikat i zakończy działanie.
trap 'echo "Zakończenie skryptu"; cleanup_function' EXIT
cleanup_function() {
echo "Czyszczenie zasobów..."
}
# reszta skryptu
Tutaj, przed zakończeniem skryptu, wywołana zostanie funkcja czyszcząca.
trap 'echo "Wystąpił błąd!"' ERR
command_that_might_fail
W tym przypadku, jeśli command_that_might_fail
zakończy się błędem, zostanie wyświetlony komunikat.
trap
do zapewnienia, że zasoby są zwalniane, nawet w przypadku błędów.trap
, oddzielając je spacjami.