curl --fail没有压制stdout

时间:2017-07-20 09:24:15

标签: bash http curl webdav

我有一个使用curl将文件上传到WebDav服务器的脚本。

curl --anyauth --user user:password file http://webdav-server/destination/

我想要同时做两件事:

  • 将脚本输出到stdout(定向到日志文件)
  • 检测上传是否成功

据我所知,即使在401(未授权)或407(冲突)情况下,curl也会返回0的退出代码。 --fail选项可用于更改此行为,但它会抑制stdout。

最好的解决方法是什么? teegrep

1 个答案:

答案 0 :(得分:1)

curl将其输出写入stderr(2),错误流而不是stdout(1)。使用2>&1

在命令上重定向它
curl --fail --anyauth --user user:password file http://webdav-server/destination/ 2>&1 > logFile
retval=$?
if [ $retval -eq 0 ]; then
    echo "curl command succeeded and the log present in logFile"
fi