我有一个很好的bash脚本,它使用curl登录到一个站点并启动一个运行良好的动作。
输出中有一些噪音,我想删除。身份验证页面的重定向(有效)会生成以下消息:
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/products">here</a>.</h2>
</body></html>
我真的只是想关闭这条消息的生成但却看不到如何。
答案 0 :(得分:1)
看起来你可能已经找到了自己的问题,但如果没有,你可以这样做:
curl --silent --fail
“ - fail或-f”不会在服务器上显示任何HTTP输出错误,“ - silent和-s”应该使它完全安静,但是,通常当你到达“对象移动”时你可以使用“-L”表示自动重定向以避免输出。
我希望这可以回答您的问题,并提供更多信息:http://curl.haxx.se/docs/manpage.html或man curl
答案 1 :(得分:0)
在评论中,你说&#34;我不想重定向标准输出,因为我想看到真正的错误。&#34;如果是我,我会捕获标准输出,检查是否是错误响应,如果是,则显示它。
如,
rslt=$( curl ... )
stat=${rslt##*\<rsp stat=\"}
stat=${stat%%\"\>*}
if [[ "$stat" == "fail" ]]; then
# parse: <err code="4" msg="your bad" />
code=${rslt##*\<err code=\"}
code=${code%%\"*}
msg=${rslt##*msg=\"}
msg=${msg%%\"*}
fi
echo "curl failed: $stat: ($code): $msg"
当然,这样做非常依赖于HTML响应的格式,因此如果服务器更改了响应格式,它将会中断。