2017-07-20 8 views
1

curlを使ってWebDavサーバーにファイルをアップロードするスクリプトがあります。curl - stdoutを抑制しないで悩む

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

は、私は同時に2つの事柄たい:

  • は、アップロードが成功したかどうかを検出
    • は(ログファイルに向けられている)stdoutにスクリプトの出力を持つ

    私が知る限り、curlは401(許可されていない)または407(競合)の状況でも終了コード0を返します。 --failオプションを使用してこの動作を変更できますが、stdoutを抑制します。

    これにはどのような最善の回避策がありますか? teeおよびgrep

  • 答えて

    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 
    
    関連する問題