Bash:
Pisanie do standardowego błędu
Jak to zrobić:
W Bashu używasz >&2
do przekierowania wyjścia do stderr. Oto podstawowy przykład:
echo "To jest zwykła wiadomość"
echo "To jest wiadomość o błędzie" >&2
Uruchomienie tego skryptu wyświetli obie wiadomości w konsoli, ale jeśli je przekierujesz, możesz oddzielić stdout od stderr. Na przykład:
bash script.sh > output.txt 2> error.txt
output.txt
będzie zawierał "To jest zwykła wiadomość"
, podczas gdy error.txt
przechwyci "To jest wiadomość o błędzie"
.
Dla praktycznego przypadku użycia, rozważ skrypt, który przetwarza pliki i zgłasza błąd, jeśli plik nie istnieje:
filename="example.txt"
if [ ! -f "$filename" ]; then
echo "$filename nie istnieje!" >&2
exit 1
else
echo "Przetwarzanie $filename"
fi
Przykładowe wyjście bezpośrednio w konsoli, gdy example.txt
nie istnieje:
example.txt nie istnieje!
Nie ma bezpośrednich bibliotek firm trzecich w Bashu do obsługi stderr, ponieważ przekierowanie jest natywnie obsługiwane i ogólnie wystarczające. Jednakże dla złożonych aplikacji można włączyć ramy logowania lub zewnętrzne narzędzia do logowania, takie jak syslog
czy log4bash
, aby skuteczniej zarządzać zarówno stdout, jak i stderr.