2013-11-01 3 views
0

Я хотел бы проанализировать возвращаемое значение команды wget. Стараюсь те:проанализировать возвращаемое значение команды wget

GET=$(wget ftp://user:[email protected]/conf.txt 
    echo $GET 
    GET=`wget ftp://user:[email protected]/conf.txt` 
    echo $GET 

, но я не получаю возвращенное значение, когда дисплей GET переменная

как получить возвращается значение Wget

ответ

3

Ваш вопрос немного неоднозначным. Если вы спрашиваете: «Что такое код выхода из процесса« wget », который доступен в специальной переменной $?».

[~/tmp]$ wget www.google.foo 
--2013-11-01 08:33:52-- http://www.google.foo/ 
Resolving www.google.foo... failed: nodename nor servname provided, or not known. 
wget: unable to resolve host address ‘www.google.foo’ 
[~/tmp]$ echo $? 
4 

Если вы просите стандартный вывод команды «Wget», то, что вы делаете собирается дать вам, что, хотя у вас есть опечатка в первой строке (Добавить закрывающие скобки после "conf.txt"). Проблема в том, что wget не ставит ничего в stdout, по умолчанию. Прогресс, бары и сообщения, которые вы видите при запуске Wget в интерактивном режиме на самом деле происходит в стандартный вывод, который вы можете увидеть, перенаправив поток ошибок на стандартный вывод, используя перенаправление оболочки 2>&1:

[~/tmp]$ GET=`wget www.google.com 2>&1` 
[~/tmp]$ echo $GET 
--2013-11-01 08:36:23-- http://www.google.com/ Resolving www.google.com... 74.125.28.104, 74.125.28.99, 74.125.28.103, ... Connecting to www.google.com|74.125.28.104|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 18637 (18K) [text/html] Saving to: ‘index.html’ 0K .......... ........ 100% 2.72M=0.007s 2013-11-01 08:36:23 (2.72 MB/s) - ‘index.html’ saved [18637/18637] 

Если вы просите за содержание ресурса что wget получен, тогда вам нужно проинструктировать wget для отправки своего вывода в stdout вместо файла. В зависимости от вашего вкуса wget, вероятно, такой вариант, как -O или --output-document, и вы можете построить свою командную строку как: wget -O - <url>. По соглашению одиночный тире (-) представляет stdin и stdout в параметрах командной строки, поэтому вы сообщаете wget для отправки своего файла в stdout.

[~/tmp]$ GET=`wget -O - www.google.com` 
--2013-11-01 08:37:31-- http://www.google.com/ 
Resolving www.google.com... 74.125.28.104, 74.125.28.99, 74.125.28.103, ... 
Connecting to www.google.com|74.125.28.104|:80... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 18621 (18K) [text/html] 
Saving to: ‘STDOUT’ 

100%[=======================================>] 18,621  98.5KB/s in 0.2s 

2013-11-01 08:37:32 (98.5 KB/s) - written to stdout [18621/18621] 
[~/tmp]$ echo $GET 
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage"><head> 
<snip lots of content> 
-1

Вы можете получить код выхода с

echo $? 

после выполнения команды. Но если вам нравится реагировать на рабочую/нерабочую загрузку, вы можете использовать, если

if wget -q www.google.com 
then 
    echo "works" 
else 
    echo "doesn't work" 
fi 
Смежные вопросы