如何在curl中关闭重定向消息

时间:2011-12-13 13:35:25

标签: bash curl

我有一个很好的bash脚本,它使用curl登录到一个站点并启动一个运行良好的动作。

输出中有一些噪音,我想删除。身份验证页面的重定向(有效)会生成以下消息:

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/products">here</a>.</h2>
</body></html>

我真的只是想关闭这条消息的生成但却看不到如何。

2 个答案:

答案 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响应的格式,因此如果服务器更改了响应格式,它将会中断。