답변:
가장 간단한 방법은 응답을 저장하고 비교하는 것입니다.
$ response=$(curl -X POST -d@myfile.txt server-URL);
$ if [ "Upload successful" == "${response}" ]; then … fi;
나는 그것을 테스트하지 않았습니다. 구문이 꺼져있을 수도 있지만 이것이 바로 아이디어입니다. curl의 종료 코드 또는 무언가를 확인하는 것과 같이보다 정교한 방법이 있다고 확신합니다.
curl
꽤 많은 종료 코드를 반환합니다. 실패한 게시물이 발생할 수 있다고 생각합니다. 55 Failed sending network data.
따라서 $?
( Expands to the exit status of the most recently executed foreground pipeline.
)와 비교하여 종료 코드가 0인지 확인할 수 있습니다 .
$ curl -X POST -d@myfile.txt server-URL;
$ if [ 0 -eq $? ]; then … fi;
또는 명령이 비교적 짧고 실패 할 때 수행하려는 경우 조건 문의 조건으로 종료 코드를 사용할 수 있습니다.
$ if curl --fail -X POST -d@myfile.txt server-URL; then
# …(success)
else
# …(failure)
fi;
curl's --fail
옵션을 먼저 테스트해야하지만 옵션 을 사용할 수 있습니다 .
man curl
-f, --fail (HTTP) 서버 오류시 자동으로 출력되지 않습니다. 이것은 대부분 실패한 시도를보다 잘 처리하기 위해 스크립트 등을 더 잘 활성화하기 위해 수행됩니다. 일반적으로 HTTP 서버가 문서를 전달하지 못하면 HTML 문서를 리턴합니다 (이유 및 그 밖의 이유도 설명 함). 이 플래그는 컬이 출력되는 것을 방지하고 오류 22를 반환합니다.
This method is not fail-safe and there are occasions where non- successful response codes will slip through, especially when authentication is involved (response codes 401 and 407).
이런 식으로 당신은 할 수 있습니다 :
args="-X POST -d@myfile.txt server-URL"
curl -f $args && echo "SUCCESS!" ||
echo "OH NO!"