2014-11-05 14 views
5

Muszę sprawdzić, czy dane mojego programu są przekierowywane; jeśli tak, muszę zachować i wysłać pocztą.Sprawdź, czy w skrypcie Basha jest przekierowanie standardowe:

przykład:

$ myprogram -param1 -param2 -param3 > /home/polly/log.txt 

myprogram.sh:

if 'redirection is not empty'; then 
    cat <redirection name> | mailx -s "This is a test email." [email protected] 
fi 
+0

Nie jestem pewien, czy rozumiem. Jeśli wywoływany jest jako 'myprogram> something', chcesz wysłać treść" czegoś "? –

+0

Czy możesz zadać pytanie? – Steffen

+0

poprawne, chcę zachować coś i wysłać go do treści wiadomości – JackFrost65

Odpowiedz

6

Można sprawdzić, czy stdout jest terminal. Gdy standardowe wyjście jest przekierowywane lub przesyłane strumieniowo, nie będzie terminalem. Można użyć polecenia test z opcją -t aby uzyskać te informacje:

if [ -t 1 ] ; then 
    # stdout is a terminal 
else 
    # stdout isn't a terminal 
fi 

Od man test:

-t FD file descriptor FD is opened on a terminal 
+0

ok, ale gdzie mogę znaleźć nazwę stdout? – JackFrost65

+0

Nie można pobrać nazwy pliku (lub komendy za rurą) – hek2mgl

+1

[numer referencyjny] (http://stackoverflow.com/questions/5602663/how-to-get-na-na-na-na-programowaniu-asachowanie- -stdin-stdout) – kojiro

Powiązane problemy