почему Tee не записывает весь вывод данных (Bash)? - PullRequest
1 голос
/ 30 января 2012

У меня возникла проблема, причина которой я не знаю. Я думаю, что самый простой способ объяснить это на примере кода:

test ()
{
    echo "This will be printed to the file"

    #But the output of rsync will not
    rsync -av /path/A /path/B

    echo "This will be printed to the file"
}

function_calling_test ()
{
    test | tee -a "file_B.txt"
}

function_calling_test | tee -a "file_A.txt"

В приведенном выше примере file_A.txt будет содержать как echo , так и вывод rsync из функции "test" , но file_B.txt будет содержать только вывод echo . Почему это?

1 Ответ

1 голос
/ 30 января 2012

Вам необходимо добавить вывод stderr в поток

mytest ()
{
    echo "This will be printed to the file"

    #But the output of rsync will not
    rsync -av /path/A /path/B 2>&1
    # -----------------------^^^^^^

    echo "This will be printed to the file"
}

test - это команда, доступная для всех оболочек Unix, которая является частью ОС Unix / Linux. Не называйте свои функции просто тестом, вы настраиваете себя на аварию! ; -)

Надеюсь, это поможет.

...