컬 명령을 사용하여 웹 서비스에 요청을 보내고 웹 서비스의 출력이 파일에 기록되는 스크립트가 있습니다. 그런 다음 파일이 다른 위치로 이동됩니다.
컬 명령이 성공적으로 완료되었고 출력이 파일에 기록되었는지 확인하기 위해 스크립트에서 지연(파일에 출력 쓰기가 완료될 때까지 대기)을 사용하는 방법이 있습니까?
정보가 기록되는 동안 파일을 이동하는 상황을 피하고 싶습니다.
당신의 의견에 감사드립니다
답변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)"'