15.12. Przekierowanie wyjścia na czas działania skryptu
Problem
Chcemy przekierować strumień danych wyjściowych dla całego skryptu bez konieczności modyfikowania każdej instrukcji echo
lub printf
.
Rozwiązanie
Aby przekierować dane strumienia STDOUT
i STDERR
, można wykorzystać mało znaną instrukcję exec
.
# Zachowanie "starego" deskryptora STDERR – opcjonalne exec 3>&2 # Skierowanie wyszystkich danych STDERR do pliku dziennika exec 2> /ścieżka/do/pliku.log # Poniżej można umieścić treść skryptu, którego strumień STDERR został globalnie # przekierowany do pliku # Wyłączenie przekierowania – przywrócenie standardowego strumienia STDERR i zamknięcie # deskryptora pliku 3 exec 2>&3-
Analiza
Polecenie exec
zazwyczaj zastępuje działającą powłokę poleceniem ...
Get Bash. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.