프록시를 사용하여 컬을 호출하는 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=$?
두 개의 "반환" 코드를 받았습니다. 고마워하는음!