~에 따르면 "&&" 사용은 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