2014-10-13 3 views
0

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

Это моя попытка:

sh test www.3232.com.pe 
www.3232.com.pe 
test: line 7: [: -ne: unary operator expected 
$ cat test 
#!/bin/sh 

for var in "[email protected]" 
do  
    echo $var 
    res=`curl -s -I $var | grep HTTP/1.1 | awk {'print $2'}` 
    if [ $res -ne 200 ] 
    then 
    echo "Error on $var" 
    fi 
done 
+0

использовать два кронштейна: 'if [[$ res -ne 200]]' – JNevill

ответ

1

Рассмотрим, что произойдет, если curl не сможет успешно подключиться:

res=`curl -s -I $var | grep HTTP/1.1 | awk {'print $2'}` 
if [ $res -ne 200 ] 

Если curl не получает заголовки, или не получает/1.1 заголовок HTTP , то в первой команде команда не выводит ничего, а res присваивается ничего. В этом случае тест во второй строке завершится с ошибкой unexpected operator.

Вам необходимо сначала проверить, что res не пуст. И, если он пуст, предпримите соответствующие действия.

+0

Спасибо. Я использовал это: если [-z "$ res"] || [$ res -ne 200] – M2201

Смежные вопросы