이 스레드에서:https://superuser.com/questions/569092/how-to-split-the-http-error-code-from-the-contents-in-curl
이 부분은 다음을 의미합니다.
if [[ $RET -ne 0 ]] ; then
# if error exit code, print exit code
echo "Error $RET"
이것을 오류 처리로 사용하고 싶지만 400을 반환하면 여전히 else 섹션에 응답하고 코드만 표시하므로 이 조건이 무엇인지 잘 모르겠습니다. https 상태 코드입니까, 아니면 실패한 요청입니까? 좀 더 자세히 설명해주세요.
죄송합니다. 댓글을 추가할 수 없습니다. :( 이것이 새로운 질문의 이유입니다.
답변1
귀하가 언급한 질문을 살펴보면 다음과 같은 내용을 볼 수 있습니다.
OUT=$( curl -qSfsw '\n%{http_code}' http://superuser.com ) 2>/dev/null
# get exit code
RET=$?
if [[ $RET -ne 0 ]] ; then
# if error exit code, print exit code
echo "Error $RET"
...
else
...
fi
내장 $?
변수는 이전에 실행한 명령의 반환 코드(이 경우 )가 포함된 특수 변수입니다 curl
. 이는 반환 코드입니다.바이너리 에서 curl
쉘로 복귀,아니요이 예에서는 HTTP 상태 코드콘솔 출력의 curl
.
OUT= ...
따라서 RET=$?
해당 줄과 덮어쓰기 사이에 명령이 없으면 $?
구현 curl
에서는 오류가 발생하더라도 반환 코드를 내보냅니다(이 경우 옵션이 반환을 나타내기 때문에 이상합니다).0
400
-f
curl
22
그건 그렇고, 그 진술에 주목하십시오
OUT=$( curl ... ) 2>/dev/null
말이 안 돼요.
OUT="$( curl ... 2>/dev/null )"