LINUX.ORG.RU

Как засунуть stderr в sh переменную ?


0

0

Есть программа, нужно запустить ее и stdout засунуть в одну переменную, а stderr в другую, как проще это сделать ?

stdout можно так:
MYSTDOUT=$(./prog)

Как то-же сделать с stderr ? Запускать программу можно только один раз.
Смешивать stderr и stdout нельзя. Не хочется с файлами извращатся, чуствую что можно и без файлов, подскажите плиз !

anonymous

Ответ на: Re: Как засунуть stderr в sh переменную ? от Chumka

Re: Как засунуть stderr в sh переменную ?

Нет надо одновременно получить в разных переменных stdout и stderr при одном запуске программы.

anonymous ()

Re: Как засунуть stderr в sh переменную ?

Есть программа (сырцов от нее нет), типа:

cat prog.cpp:
#include <stdio.h>

int main()
{
fprintf (stdout, "stdout\n");
fprintf (stderr, "stderr\n");

return 0;
}

g++ prog.cpp -o prog

Нужно ее вызвать один раз и получить чтобы например в переменной MYSTDOUT лежало "stdout\n", а в MYSTDERR лежало "stderr\n".

Понятно что можно сделать:
./prog > /tmp/stdout 2> /tmp/stderr
MYSTDOUT=$(cat /tmp/stdout)
MYSTDERR=$(cat /tmp/stderr)

Но через файлы не красиво... Как сделать не через файлы ???

anonymous ()

Re: Как засунуть stderr в sh переменную ?

а что мешает перенаправить stderr в файл и потом считать из него в переменную?

corpus ()
Ответ на: Re: Как засунуть stderr в sh переменную ? от anonymous

Re: Как засунуть stderr в sh переменную ?

>./prog > /tmp/stdout 2> /tmp/stderr >MYSTDOUT=$(cat /tmp/stdout) >MYSTDERR=$(cat /tmp/stderr)

можно выводить в файл только stderr или stdin (чей обьём поменьше):

MYSTDOUT=$(./prog 2> /tmp/stderr)

MYSTDERR=$(cat /tmp/stderr)

corpus ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.