![컬을 사용하여 임시 파일에 저장하고 성공한 경우에만 제자리로 이동합니다.](https://linux55.com/image/175480/%EC%BB%AC%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9E%84%EC%8B%9C%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%A0%80%EC%9E%A5%ED%95%98%EA%B3%A0%20%EC%84%B1%EA%B3%B5%ED%95%9C%20%EA%B2%BD%EC%9A%B0%EC%97%90%EB%A7%8C%20%EC%A0%9C%EC%9E%90%EB%A6%AC%EB%A1%9C%20%EC%9D%B4%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4..png)
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
컬만 사용하여 하나의 명령으로 이 모든 작업을 수행할 수 있나요? 컬에는 "임시 파일에 저장하고 성공할 때만 이동"하는 옵션이 있습니까?
고쳐 쓰다:저는 이것을 자주 사용하기 set -o errexit
때문에 컬 명령이 실패하면 스크립트가 실패합니다. mv
iff 실행이 curl
실패하지 않았습니다.
답변1
내가 아는 한, curl
이에 대한 내장 기능은 없습니다. 귀하의 방법은 (를 사용하여 errexit
) 얻을 수 있는 만큼 훌륭합니다. 설정에 관계없이 명시적으로 만들 수 있습니다.
curl -o ${TEMP} https://example.com/files/results.zip &&
mv ${TEMP} /data/path/to/results/results.zip