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.