전체 파일을 가져오기 전에 전송을 닫을 때 컬에서 올바른 오류 코드를 얻는 방법

전체 파일을 가져오기 전에 전송을 닫을 때 컬에서 올바른 오류 코드를 얻는 방법

프록시를 사용하여 컬을 호출하는 bash 스크립트가 있습니다. 오늘 다운로드 위치에 문제가 발생했습니다.

컬을 호출한 결과는 다음과 같습니다.

curl: (18) transfer closed with 7512708716 bytes remaining to read

이 오류에도 불구하고 반환 코드는 여전히 200이므로 내 스크립트는 모든 것이 괜찮다고 "생각"합니다.

http-200 외에 다른 반환 코드를 제공하도록 컬에 어떻게 지시할 수 있나요?

답변1

curl --fail원하는 부분을 수행하십시오.

~에서man curl:

-f, --fail

(HTTP) 서버 오류가 발생하면 자동으로 실패합니다(출력 없음). 이는 실패한 시도를 더 잘 처리하기 위해 스크립트 등을 더 잘 활성화하기 위해 주로 수행됩니다. 일반적인 상황에서 HTTP 서버가 문서를 전달할 수 없으면 상황을 설명하는 HTML 문서를 반환합니다(일반적으로 이유와 추가 정보도 설명). 이 플래그는 컬이 이 내용을 출력하지 못하게 하고 오류 22를 반환합니다.

이 방법은 안전하지 않으며 특히 인증이 관련된 경우 실패한 응답 코드(응답 코드 401 및 407)를 놓치는 경우가 있습니다.

그러나 화면으로의 출력을 방해합니다.

답변2

오류는 다음과 같습니다

rc=$( curl ... )

$rc이것은 컬의 표준 출력을 채울 때 반환된 http 코드를 제공합니다 . 나중에 rc채워야 했어요 $?.

내 코드를 다음으로 변경하십시오.

httprc=$( curl ...)
rc=$?

두 개의 "반환" 코드를 받았습니다. 고마워하는!

관련 정보