使用bash script/python/perl script
,是否可以显示没有字符串的命令的输出,例如
curl -i http://www.google.com
HTTP/1.1 302 Found
Location: http://www.google.com.hk/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
我想做的是:
302 is missed
答案 0 :(得分:1)
$ grep -q 302 << EOF || echo "302 is missed"
> HTTP/1.1 302 Found
> Location: http://www.google.com.hk/
> Cache-Control: private
> Content-Type: text/html; charset=UTF-8
> EOF
$ grep -q 302 << EOF || echo "302 is missed"
> HTTP/1.1 312 Found
> Location: http://www.google.com.hk/
> Cache-Control: private
> Content-Type: text/html; charset=UTF-8
> EOF
302 is missed
答案 1 :(得分:1)
您的意思是以下内容:
if [ ! `echo 302 | grep 302` ] ; then echo 302 is missed; fi
您可以使用任何适当的命令替换echo 302
......
等效:
echo 302 | grep 302 > /dev/null || echo "302 is missed"
答案 2 :(得分:1)
您可以使用curl|grep
静默作为测试的结果:
if ! `curl -i -s http://www.google.com|grep -q 302` ; then echo "302 is missed" ; fi
答案 3 :(得分:1)
您可以告诉curl
仅输出http代码(如果您感兴趣的话)。
例如:
$ curl -Is -w %{http_code} -o /dev/null http://stackoverflow.com
200
上面使用的卷曲选项是:
-I
:仅提取HTTP标头-s
:沉默。不要表现出进步
计量表或错误消息-w
:要写出什么。在这种情况下,只
http_code -o
:将输出发送到因此您可以将其添加到以下条件中:
[[ $(curl -Is -w %{http_code} -o /dev/null http://stackoverflow.com) -ne 302 ]] && echo "302 is missed"
答案 4 :(得分:0)
我认为这可以解决问题,但是一如既往地先测试。
perl -e '$pat = shift; print "$pat is missed\n" unless qx{@ARGV} =~ /\Q$pat\E/' 302 curl -i http://www.google.com