Unix
為什麼這個 bash 命令沒有回顯到變數中,我可以做些什麼來改進?
我有一個我正在努力改進的bash 腳本,並且感謝Dennis Williamson進行了很好的修復。不幸的是,其中一行不再回顯到我可以操作的變數中,而是直接轉儲輸出。如果我能解決這個問題,我會很高興的。
為什麼這個 bash 命令沒有回顯到 $result 變數中,我可以做些什麼來改進?
result=$( time wget -q --output-document=/tmp/wget.$$.html http://domain.tomonitor.com 2>&1; );
編輯:我嘗試過的各種解決方案
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"
日期和主機目前很好。$result 不是。
我得到這樣的行:
3.887
2011 年 2 月 15 日星期二 08:39:53 PST,192.168.0.2,
3.910
2011 年 2 月 15 日星期二 08:39:57 PST,192.168.0.3,
我期待這樣的行:
2 月 15 日星期二 08:39:53 PST 2011, 192.168.0.2, 3.887
2 月 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
)。