Как отправить выведенный и на экран и на почту?

Не зная, какой язык Вы используете для написания кода в, это трудно дать Вам специфические особенности, но здесь является маленькой краткой информацией о выводах.

ошибка, stdout, stderr не являются переменными, но типами вывода, который может возвратить двоичный файл Unix.

stdout - Это - стандартный текст, который программа выводит на экран (во многих случаях) или файл (если перенаправлено) или другая программа, это может быть получено с помощью

program > file

stderr - Это - текст, который производится к потоку сообщений об ошибках, второй вывод, который не является caputred никаким перенаправлением stdout потока. Можно получить это использование

program 2> file

ошибка - Это - код, возвращенный из программы после того, как это завершится. Успех обычно обозначается 0. Можно получить это использование

#!/bin/bash
program
echo $?

Можно узнать больше о потоках на уровне страницы Wikipedia для Standard_Streams. Существует хорошая документация получения потоков в, избивают руководство удара.

9
20.09.2012, 01:20
1 ответ

Самый легкий путь, вероятно, к tee сообщение к stderr, а также stdout:

echo "Script finished on date" | tee /dev/stderr \
    | /usr/bin/Mail -s "Script complete" "myaccount@myserver.com"

tee копирует его вход нескольким местам назначения, включая stdout. По умолчанию и stderr и stdout переходят к экрану; Вы перенаправляете stdout к Mail, отъезд просто stderr идущий в экран.

При необходимости в нем в stdout по некоторым причинам Вы могли бы перенаправить его назад использование подоболочки (или несколько других путей):

(
    echo "Script finished on date" | tee /dev/stderr \
        | /usr/bin/Mail -s "Script complete" "myaccount@myserver.com"
) 2>&1
18
27.01.2020, 20:05
  • 1
    альтернативно, мишень в файл и затем отправляют по почте файл... очень полезный, если вывод огромен, и Вы хотите отправить его, например, как base64-закодированное gzipped вложение MIME. или просто перенаправьте весь вывод в файл (например, с exec &> $LOGFILE) и затем восстановите stdout, кошка файл к stdout и отправьте его по почте. –  cas 20.09.2012, 01:48
  • 2
    . Так как мой текст в этом случае очень мелок, я пойду с ответом от derobert. –  sammy 20.09.2012, 19:45
  • 3
    Хм.. это действительно работало однако, я понял, что должен был добавить больше к своему описанию проблемы. Я использовал это решение в качестве последней строки моего сценария. Я использовал команду "nohup" на своем сценарии для сбора всего вывода моего сценария как "nohup.out" и все, что я вижу, просто эта строка "Сценарий, законченный на xxxxx". До использования этого решения я добрался, весь сценарий произвел прекрасный. Существует ли путь, как я могу добавить вывод этого, длятся одну строку вместо того, чтобы стереть все это? –  sammy 24.09.2012, 18:06
  • 4
    Используя "мишень-a" решил проблему. –  sammy 24.09.2012, 19:09

Теги

Похожие вопросы