我正在尝试编写一个脚本来测试我的防火墙是否阻止多个页面。当我尝试从命令行读取一行或多行时,我得到一个-ne:酉运算符预期错误。
这是我的尝试:
sh test www.3232.com.pe
www.3232.com.pe
test: line 7: [: -ne: unary operator expected
$ cat test
#!/bin/sh
for var in "$@"
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 :(得分:1)
考虑如果curl
无法成功连接会发生什么:
res=`curl -s -I $var | grep HTTP/1.1 | awk {'print $2'}`
if [ $res -ne 200 ]
如果curl
没有获得任何标头,或者没有获得HTTP / 1.1标头,则第一个命令中的pipline不输出任何内容,res
被分配给任何内容。在这种情况下,第二行中的测试将失败并出现unexpected operator
错误。
您需要首先测试res
是否为空。而且,如果它是空的,请采取适当的行动。