curl
能够使用-o
/--output
开关将 URL 下载到特定文件。据我所知,这将保存该文件,如果下载发生问题,则该文件将仅下载一半。
我可以通过创建一个临时文件并将其移动到位来解决此问题:
TEMP=$(mktemp -p /data/path/to/results/ tmp.results.zip.XXXXXX)
curl -o ${TEMP} https://example.com/files/results.zip
mv ${TEMP} /data/path/to/results/results.zip
我可以仅使用curl 在一个命令中完成这一切吗? curl 是否有“保存到临时文件并仅在成功时才移动”的选项?
更新:我经常使用set -o errexit
,所以如果curl命令失败,脚本就会失败。mv
运行 iffcurl
没有失败。
答案1
据我所知,curl
没有这个内置的;你的方法已经尽善尽美了(与errexit
)。无论设置如何,您都可以将其明确化:
curl -o ${TEMP} https://example.com/files/results.zip &&
mv ${TEMP} /data/path/to/results/results.zip