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" >&2Uruchomienie 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.txtoutput.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"
fiPrzykł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.