cURL에 대한 합격/실패 테스트(첫 번째 줄이 실패하면 두 번째 줄이 실행되지 않음)

cURL에 대한 합격/실패 테스트(첫 번째 줄이 실패하면 두 번째 줄이 실행되지 않음)

~에 따르면 "&&" 사용은 cURL 양식 제출에 영향을 미치지 않습니다. (첫 번째 줄이 실패하면 두 번째 줄이 실행되지 않습니다.)

아래 코드에서 첫 번째 줄은 컬 제출을 위한 것이고, 두 번째 줄은 대기열을 위한 것입니다.

curl -b cookies.txt \
    -d title="$(sed '1,/sblmtitle/d;/slpstitle/,$d' sedut.html)" \
    -d taxonomy%5Btags%5D%5B1%5D="$(
        sed '1,/sblmkategori/d;/slpskategori/,$d' sedut.html
    )" \
    -d teaser_include=1 \
    -d body="$(sed '1,/sblmkonten/d;/slpskonten/,$d' sedut.html)" \
    -d field_source%5B0%5D%5Burl%5D="$(
        sed '1,/sblmurl/d;/slpsurl/,$d' sedut.html
    )" \
    -d changed= \
    -d form_build_id=form-424f851ad50bd4781c8c25ab7efd5c4c \
    -d form_token=0e7cc7437faf816f1ecd96087286bda9 \
    -d form_id=post_node_form \
    -d op=Save http://www.web.org/submit/post &&
for file in $(ls *.html | sort -r | tail -1); do
    mv $file sedut.html
done

제출이 실패 하면 cURL내용이 인쇄됩니다 sedut.html. 제출이 성공 하면 cURL아무 것도 인쇄되지 않습니다.

하지만 제출이 성공하든 실패하든 항상 cURL주어진다.0

cURL" 아무것도 인쇄되지 않으면 두 번째 줄을 실행"하고 " cURL뭔가 인쇄되면 두 번째 줄을 실행하지 않는 것" 이 ​​가장 좋은 작업 흐름이라고 생각합니다.

방금 Linux 명령을 보았지만 if예제의 상황이 다르기 때문에 구현 방법을 여전히 모릅니다.

답변1

여기에서 핵심을 찾았습니다. 컬의 출력이 다르면 테스트할 수 있습니다. 먼저 파일로 보낼 수 있습니다. 다음으로 테스트에서 -s 옵션을 활용할 수 있습니다.

-s file 파일이 존재하고 크기가 0보다 크면 참입니다.

다음은 몇 가지 샘플 코드입니다.

curl -b cookies.txt ... -o /tmp/curl_output
if [ -s /tmp/curl_output ]; then
  do failure stuff here
else
  do successful stuff here
fi

학문적 이유로 또 다른 구현:

if curl -b cookies.txt ... 2>&1 | grep 'some line from sedut.html' >/dev/null 2>&1; then 
  do failure stuff here
else
  do successful stuff here
fi

관련 정보