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
とコマンド&&
に使用します。この場合、前のコマンドの実行が成功した場合にのみ実行されます。curl
mv
mv
curl
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)"'