カールコマンドが正常に完了した時期の識別

カールコマンドが正常に完了した時期の識別

curlコマンドを使用してWebサービスに要求を送信し、Webサービスの出力がファイルに書き込まれるスクリプトがあります。その後、ファイルは別の場所に移動されます。

curlコマンドが正常に完了し、出力がファイルに書き込まれたことを確認するためにスクリプトで遅延(ファイルへの出力書き込みが完了するのを待つ)を使用する方法はありますか?

情報の記録中にファイルを移動する状況を避けたい。

ご意見ありがとうございます

答え1

遅延を使用する理由とファイルを移動する必要があるのはなぜですか?

正しい場所にファイルを作成してください。

curl -o /path/to/correct/place/filename URL

Curlがエラーなしで終了すると、終了ステータスは0で終了します。 Curlが成功した場合にのみ、この事実を使用してファイルを正しい場所に移動できます。

curl -o file URL && mv file /some/place

またはバグ報告が必要な場合:

if curl -o file URL; then
    mv file /some/place
    # or, to use sftp:
    #      printf 'put file\n' | sftp -b - user@host 
else
    printf 'Curl failed with error code "%d" (check the manual)\n' "$?" >&2
    exit 1
fi

答え2

とコマンド&&に使用します。この場合、前のコマンドの実行が成功した場合にのみ実行されます。curlmvmvcurl

curl .... >to_file && mv to_file /to/dest

SFTP サーバー間でファイルを移動する必要がある場合は、次のコマンドを使用します。

sftp USER@HOST:/path/in/remote/dest <<< $'put /path/to/local/to_file'

でもリモートSFTPパスに直接書き込むとFILEがcurl出力されます。

sftp USER@HOST:/path/in/remote/dest <<< $'put /path/to/local/"$(curl -o FILE URL)"'

関連情報