URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 47070
[ Назад ]

Исходное сообщение
"Перенаправление stderr/stdout в переменную(не в файл) в shell-скрипте"

Отправлено Gleb , 11-Авг-04 11:18 
Hi, All!

Посоветуйте как лучше сделать сабж.
Спасибо.


Содержание

Сообщения в этом обсуждении
"Перенаправление stderr/stdout в переменную(не в файл) в shel..."
Отправлено Jake , 11-Авг-04 12:06 
>Hi, All!
>
>Посоветуйте как лучше сделать сабж.
>Спасибо.

var="`<command> 2>&1`"


"Перенаправление stderr/stdout в переменную(не в файл) в shel..."
Отправлено YuryD , 11-Авг-04 12:08 
#!/bin/csh
#
set VV = `/bin/ls *.pl`
echo $VV

"Перенаправление stderr/stdout в переменную(не в файл) в shel..."
Отправлено Jake , 11-Авг-04 12:16 
>#!/bin/csh
>#
>set VV = `/bin/ls *.pl`
>echo $VV

тук у тебя в переменную попадет только стандартный вывод, поток ошибок туда не попадет. (добавь к примеру echo "--" перед echo $VV и увидишь это).
надо объединять потоки. csh не пользовался, как объединить потоки не знаю...
как сделать в баше написал выше


"Перенаправление stderr/stdout в переменную(не в файл) в shel..."
Отправлено YuryD , 11-Авг-04 13:14 
>тук у тебя в переменную попадет только стандартный вывод, поток ошибок туда
>не попадет. (добавь к примеру echo "--" перед echo $VV и

Это верно - поторопился...


"Перенаправление stderr/stdout в переменную(не в файл) в shel..."
Отправлено Gleb , 11-Авг-04 14:40 
Огромное всем спасибо!
конструкция var="`<command> 2>&1`" работает если нет интерактивности
В моем случае <command> интерактивна - "dialog"
Пример:
var=`dialog --inputbox "test" 10 10 2>&1`
echo $var


ЗЫ
Раньше перенаправлял stderr/stdout в переменную припомощи
set var=...
Не могу вспомнить как :(
Напомните ПОЖАЛУЙСТА!
очень нужно.


"Перенаправление stderr/stdout в переменную(не в файл) в shel..."
Отправлено Jake , 12-Авг-04 08:30 
>Огромное всем спасибо!
>конструкция var="`<command> 2>&1`" работает если нет интерактивности
>В моем случае <command> интерактивна - "dialog"
>Пример:
>var=`dialog --inputbox "test" 10 10 2>&1`
>echo $var
>
>
>ЗЫ
>Раньше перенаправлял stderr/stdout в переменную припомощи
>set var=...
>Не могу вспомнить как :(
>Напомните ПОЖАЛУЙСТА!
>очень нужно.

exec 3>&1; res="`dialog --inputbox "test" 10 30 2>&1 1>&3`"; exec 3>&-;
echo $res


"Перенаправление stderr/stdout в переменную(не в файл) в shel..."
Отправлено Jake , 12-Авг-04 08:37 
>>Огромное всем спасибо!
>>конструкция var="`<command> 2>&1`" работает если нет интерактивности
>>В моем случае <command> интерактивна - "dialog"
>>Пример:
>>var=`dialog --inputbox "test" 10 10 2>&1`
>>echo $var
>>
>>
>>ЗЫ
>>Раньше перенаправлял stderr/stdout в переменную припомощи
>>set var=...
>>Не могу вспомнить как :(
>>Напомните ПОЖАЛУЙСТА!
>>очень нужно.
>
>exec 3>&1; res="`dialog --inputbox "test" 10 30 2>&1 1>&3`"; exec 3>&-;
>echo $res

или проще:
res="`dialog --stdout --inputbox "test" 10 30`"; echo $res


"Перенаправление stderr/stdout в переменную(не в файл) в shel..."
Отправлено Gleb , 12-Авг-04 09:52 
>>>Огромное всем спасибо!
>>>конструкция var="`<command> 2>&1`" работает если нет интерактивности
>>>В моем случае <command> интерактивна - "dialog"
>>>Пример:
>>>var=`dialog --inputbox "test" 10 10 2>&1`
>>>echo $var
>>>
>>>
>>>ЗЫ
>>>Раньше перенаправлял stderr/stdout в переменную припомощи
>>>set var=...
>>>Не могу вспомнить как :(
>>>Напомните ПОЖАЛУЙСТА!
>>>очень нужно.
>>
>>exec 3>&1; res="`dialog --inputbox "test" 10 30 2>&1 1>&3`"; exec 3>&-;
>>echo $res
>
>или проще:
>res="`dialog --stdout --inputbox "test" 10 30`"; echo $res


Jake, спасибо!

В моем "dialog" --stdout - отсутствует :(, вывод идет в stderr.
Но "cdialog" --stdout - есть и все заработало :)