내 웹사이트에 제출하기 위해 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 제출이 실패하는 경우가 있었습니다.
내가 원하는 것은 첫 번째 줄이 실패하면 두 번째 줄을 실행하지 않는 것입니다. 그러나 &&
위의 코드를 사용하면 작동하지 않습니다. 테스트했는데 cURL 제출이 실패하고 sedut.html
내용이 인쇄되었지만 두 번째 줄은 여전히 실행됩니다.
답변1
curl
무엇이 실패하고 있는지 잘 모르겠습니다. 입력이 명확하게 정의되어 있고 서버와 통신하고 응답을 반환합니다 200 OK
. 따라서 종료 코드 curl
(종료 코드 ) 에 의존할 수 없습니다 &&
.
대신 성공이나 실패를 결정하기 위해 와 같은 다른 것을 사용해야 합니다 curl
.
ls
참고로 일반적으로 스크립트에 사용하는 것은 좋지 않습니다. 여기서 파일에 개행 문자나 공백 문자가 있으면 실패합니다. 가능성은 낮지만 가능합니다. 바라보다http://mywiki.wooledge.org/ParsingLs자세한 내용은. 경험상, 나는 ls
사람의 눈에 결과를 표시할 때만 스크립트에서 이것을 사용합니다. 내가 사용할 어떤 방식으로든 결과를 처리한다면find . -0 ...
답변2
&&
( ||
통과/실패 테스트의 경우) 실행될 명령과 동일한 논리 라인에 있어야 합니다. 줄 연속 && \
및/또는 중괄호 사용 { }
노트:지적한대로암피타 기계, 줄 연속 문제는 최신 sh 호환 쉘에는 적용되지 않습니다
true && echo "true"
true && \
echo "true"
true && \
{ echo "true"; echo "===="; }
(( 123 == 123 )) && {
echo "true"
echo "===="
}