Назад | Перейти на главную страницу

Почему эта команда bash не отображается в переменной и что я могу сделать для улучшения?

я получил bash скрипт Я работаю над улучшением и исправил это благодаря Деннис Уильямсон. К сожалению, одна из строк больше не отражается в переменной, которой я могу управлять, а выводит вывод напрямую. Я буду в порядке, если исправлю это.

Почему эта команда bash не отображается в переменной $ result и что я могу сделать для улучшения?

  result=$( time wget -q --output-document=/tmp/wget.$$.html http://domain.tomonitor.com 2>&1; );

EDIT: различные решения, которые я пробовал

  result=$( { time (/usr/local/bin/wget -q --output-document=/tmp/wget.$$.html --header="Host: blogs.forbes.com" http://$host) } &2>1 );

  result=$( { time (/usr/local/bin/wget -q --output-document=/tmp/wget.$$.html --header="Host: blogs.forbes.com" http://$host) } );

  result=$( ( time (/usr/local/bin/wget -q --output-document=/tmp/wget.$$.html --header="Host: blogs.forbes.com" http://$host) ) );

РЕДАКТИРОВАТЬ2:

Я повторяю такую ​​строку:

  echo "$date, $host, $result"

Дата и хозяин в настоящее время в порядке. $ результат нет.

Я получаю такие строки:

3,887

Вт 15 февраля 08:39:53 PST 2011, 192.168.0.2,

3,910

Вт 15 февраля 08:39:57 PST 2011, 192.168.0.3,

Я жду таких строк:

Вт 15 февраля 08:39:53 PST 2011, 192.168.0.2, 3.887

Вт 15 февраля 08:39:57 PST 2011, 192.168.0.3, 3.910

Вам нужны фигурные скобки вокруг всей команды внутри подстановки команд, но перед перенаправлением:

result=$( { time wget -q --output-document=/tmp/wget.$$.html http://domain.tomonitor.com; } 2>&1; );

Это фиксирует вывод time. Если вы хотите зафиксировать вывод ошибки wget (вы уже сохраняете его обычный вывод в файл), вам нужно сделать что-то немного другое, и это зависит от того, что именно вы хотите сделать. Это может включать дополнительные дескрипторы файлов или просто использовать перенаправление, которое я показал в своем ответе на ваш другой вопрос (вместо использования --output-document).

Я думаю, это должно перейти к переполнению стека, но вы пробовали это?

result=$( time (wget -q --output-document=/tmp/wget.$$.html http://domain.tomonitor.com 2>&1;) );