я получил 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;) );